Game Developer & Junior Software Engineer
Creating immersive experiences through code and creativity
Combining technical skills with creative vision
Key milestones in my development career
Started my journey in game development education
The programming languages in my toolkit
A glimpse into how I write code
public class PlayerController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 5f;
private Rigidbody rb;
void Start() => rb = GetComponent<Rigidbody>();
void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 move = new Vector3(h, 0, v);
rb.MovePosition(rb.position + move * moveSpeed * Time.fixedDeltaTime);
}
} <template>
<div class="project-grid">
<ProjectCard
v-for="project in filteredProjects"
:key="project.id"
:project="project"
@click="openProject(project)"
/>
</div>
</template>
<script setup lang="ts">
import { ref, computed } from 'vue'
import type { Project } from '@/types'
const projects = ref<Project[]>([])
const filter = ref('all')
const filteredProjects = computed(() =>
filter.value === 'all'
? projects.value
: projects.value.filter(p => p.category === filter.value)
)
</script> void AWeaponBase::Fire()
{
if (!CanFire()) return;
FHitResult Hit;
FVector Start = MuzzleComponent->GetComponentLocation();
FVector End = Start + (GetActorForwardVector() * Range);
FCollisionQueryParams Params;
Params.AddIgnoredActor(this);
Params.AddIgnoredActor(GetOwner());
if (GetWorld()->LineTraceSingleByChannel(Hit, Start, End, ECC_Visibility, Params))
{
if (AActor* HitActor = Hit.GetActor())
{
UGameplayStatics::ApplyDamage(HitActor, Damage, GetInstigatorController(), this, DamageType);
}
}
CurrentAmmo--;
}
The tools I use to bring ideas to life