About

I started my game-developing career in 2019, using the Unity game engine. I branched out to Godot in the 2nd half of 2023, primarily using Rust.Although I can handle 3D projects, I specialize in 2D games, such as Turn-based RPG, Platformer, Dungeon Crawler, Arcade, Rhythms, Fightning, Hack & Slash.My primary skill is game programming, but I am familiarized with other areas, such as:
->Scene scripting
->World building
->SFX mixing/editing
->Game design & balancing
->Drawing textures
->Drawing UI
->Editing sprite/pixel art
Although I don't usually fill these roles, my experience helps me understand and communicate with professionals in those areas.

Summary

Primary Skills

-Unity Engine
-C#
-Rust
-Godot
-Math

Secondary Skills

Disclaimer


Skills - Unity Engine

I worked with Unity through 2019 - 2023, on a 30~50 hours/week basis. In this engine, I'm experienced with the topics bellow:


The fundamentals

  • Scenes: managing, combining multiples, loading/unloading - both single & additive.

  • Game Objects: hierarchy, parenting, prefabs, positioning and rotating, both world & local.

  • Components: scripting, messaging, their relationships with other parts of the engine - important for UI/rendering/physics.

  • Scriptable Objects: scripting, automating data creation.

  • Layers: Game Object Layers, Sorting Layers and how they behave under multiple cameras and/or post-processing.

  • Cameras: render modes, sizing, view ports, ordering, ray casting, combining multiples - even when mixing different render modes.


UnityEngine.UI Package

  • Canvas: combining, nesting, render modes (Overlay/Screen Space/World Space).

  • Selectables: Buttons, Dropdowns, Input Fields, Scroll Rects, Scroll Bars, Sliders, Toggles (and Toggle Groups); transitions and how to animate them.

  • Layout Groups: vertical, horizontal, grid.

  • Content Size Fitters

  • Text Mesh Pro: rich text, sizing, editing fonts, sprites inside text.

  • Graphic Ray Casting

  • Clipping/Masking: including nested masks.

  • Raw Images: using render textures to simulate in-game world cameras.

  • Interfaces: IPointer Handlers and how they interact with the Input system, using them to script custom UI components.


2D

  • Sprites: sorting (groups too), making custom materials (both through shader code & graphs), atlasing, editing, masking, tiling.

  • Physics: update processing, RigidBodies, Colliders - both triggers and collisions, materials, force & torque.

  • Lighting (Universal Render Pipeline): light sources, blending, shadows, custom shaders.


Audio

  • Audio Sources: spatializing, effects, queuing, looping.

  • Mixers: used for splitting audio channels in categories (often Music/SFX/Voice).

  • Filters & Effects


Animation

  • Unity's built-in editor: lerping properties (fades, movement, coloring), sprites, messaging.

  • Animator: clips, state machines, properties (triggers, bools, floats).

  • Rigging: Unity's built-in bone system, SpinePro, Live2D.


Asset Management

  • Importing: I'm experienced with the importing settings of all the assets mentioned above (such as images & audio). Import settings affect how the assets are bundled, compressed and rendered. For example, proper usage of those settings allowed me to reduce build file sizes by 5x, with negligible visual/audio difference.

  • Asset bundles: setup, creating, loading (both sync & async).

  • Addressables: creating, loading (both sync & async), groups, building, validating.


Shaders & materials

Shaders are very useful for generating custom textures/effects at runtime. In Unity, they are managed by the materials system.

  • Coding shaders in Unity's HLSL: Example: I can replicate any of the shaders on ShaderToy, they are not written in HLSL but I know how to convert them. I can also code my own effects from scratch.

  • Creating shaders using URP's Shader Graph: although more limited, Shader Graph offers a more intuitive interface for making shaders. Shader Graph also provides real-time feedback, which speeds up the process of trying new effects/bug-fixing.


Tooling

  • Coding custom inspectors/property drawers: These facilitate editing properties/variables, they are very useful when there are non-programmers working in the Unity Editor.

  • Coding scripts to automate tasks: some projects require frequently downloading files from external servers (such as: downloading translations from GoogleSheets, generating MTL through DeepL), these tasks can often be automated with a small amount of code, which saves the developers a lot of time (and sanity).

  • Coding scripts to validate assets: on many instances, it's worthwhile writing scripts that verify your project files, searching for inconsistencies/mistakes (such as: missing data, invalid data - e.g.: combat NPC with negative attack damage).


3rd-party packages

Popular packages among Unity Developers, due to their usefulness and reliability.

  • DOTween: very useful for creating simple animations/animation sequences through code, which is often more productive than using Unity's Animation Editor. I use DOTween extensively on my projects.

  • Odin Inspector: it's more powerful than Unity's built-in Object inspector. This package also speeds up the process of creating custom inspectors/property drawers.

  • YarnSpinner: although I have made a custom dialogue system (VN style) in the past, nowadays I prefer using YarnSpinner as it's simpler and easier for non-programmers to write dialogue in.