DAMIEN ZEMANEK
games portfolio
Gameplay Programmer - Producer
Unity3d - C# - Game Jam - Miro
Led production workflow from start-to finish
Directed Art & Setup Meetings
Created Data-Driven & polymorphic systems, especially with ScriptableObjects
Implemented JSON saved level progression
Implemented all Art: 3D Models, UI, Textures
Gameplay Programmer - Producer
Unity3d - C# - school project - Miro
Led & Directed Team
Created Experience & Level Progression System
Created Character Customization tied to level progression
Designed and Implemented custom GOAP AI Solution for responsive NPC Behaviour
Implemented all Art: 3D Models, UI, Textures
GROCERY ODYSSEY
Highlights

modular enemy attack/combo framework

type-based polymorphic enemy composition

scriptable object dungeon configuration

json saved level progression
overview
INfo
Genre: Dungeon Crawler
Team Size: 5
Time Frame: 48 hrs
Engine: Unity3D 2022 LTS
Target Platform: PC
my role (s)
Programmer
Game Designer
UX
Producer
Art Director
introduction
Grocery Odyssey was my first ever Game Jam I participated in during my 1st year at LCAD as a student. It was also the first time I had worked with a team and collaborated on a project, our team of 5 worked very well together and I learned a lot about communication inside a game-dev setting.
I had many personal goals going into the project which I succeeded in, that being: creating an interesting and fun game, implement cross-session data persistence, and winning an award. The award we won was "Best Sound Design." In which I implemented the sound.
combat
Programmer

What i built
Point & Click Combat System
Attack/Defend modes using only a single input
Type-based polymorphic enemy system
Data-Driven attack and combo framework
design constraints
Involve the player moment to moment
Re-use level and combat components while keeping each encounter new/interesting
PROGRESSION
game designer / ux

What i built
Multi-level game progression w/ increasing difficulty
JSON save system for cross-session data persistance
Unlockable final boss
Scriptable Object dungeon configuration
DESIGN CONSTRAINTS
Progress the challange as the player gets better
Test the player with learned patterns and new patterns for the boss fight
Simple progression due to time-constraint
PRODUCtion
producer

What i did
Led development from start to finish
Acted as Art Director guiding 2D and 3D artists to create assets aligned with a cohesive visual style.
Assigned tasks, delegated work
Maintained open communication and timelines to identify progress
Setup Team Sprints and co-ordinated members
REFLECTION
KEY DESIGN ANALYSIS
Why point & click combat?
Time constraints directed me to decide on a system that player's would already understand when going into the game
I eventually make the decision to go with Point & Click because it is understood widely across the gaming market and I knew with my skills I could certainly implement it.
Why type based polymorphism enemy model?
In my experience I've learned how to use the Composition over Inheritence paradigm to structure my dependancies, using this I came up with the most time-efficient way to share behaviour, that being this typed based polymorphism, because it mocks a
Strategy-Pattern-likeType composition. which is the most flexible.
This afforded me the ability to only manage one
Enemyclass in terms of functionality frameworking cutting down on code development time. A perfect solution for our time constraints and something I had the confidence to implement.
Why attacking & combos
I decided on attacking & combos to keep in alignment with the mentality of re-usable systems construction.
Most importantly though, I created this system so I could compose the combos in the inspector without touching code. This had the intentional effect of specifically speeding up gameplay iterating. Very important for our small-time frame
WHy S.o. based configuration
During development I had set up each level as a seperate scene, which required me to go into each scene to configure their dependancies, variables, and prefabs. This was time consuming.
So I came up with the solution to have the configuration depend on an SO.
Since SO's live as an asset in the project window. I did not have to go into each scene and edit them, And I could modularly setup the config for any new levels in one location.
WHat i learned
the importance of early s.o. configuration
Although I did implement SO configuration, I realize in hindsight that I did not do it quick enough. Nearing the end I had some bugs that could have been easily solved had I had the S.O. configuration set up
Because I did not, the bugs took longer to fix at a crucial juncture of nearing our time limit
I now know that early configuration separation is highly important for SoC
json data saving & cross-session persistance
JSON data persistence was a goal I had from the start of this project. I had done solo-research before hand and wanted to try my hand at implementing it.
I succeeded and now have more confidence in my ability to research, learn, and implement systems
If I was to do this project again, I would set up JSON saving before hand as a basis and debug that system so I don't have to implement the data saver, I can just implement my implementation of the data saver, which would speed up on development.
team management & the development pipeline within a team
I learned the ins-and-outs of managing a team to create a complete product, this came with ups and downs and adjustments to our timeline. I can confidently say I can manage both myself and other members to come together in the end
Improvement-wise I could set up timelines more clearly and give resources to each individual so they can track them easier. This could be printing out a piece of paper with the timelines or having everyone set an alarm.
Technical Deep Dive:
CUTE RABBIT ADVENTURE
Highlights

Character Custimzation

experience & level system

GOAP AI SYSTEM (belief/action/detector)
overview
INfo
Genre: Action Adventure
Team Size: 4
Time Frame: 6 weeks
Engine: Unity3D 2022 LTS
Target Platform: PC
my role (S)
Programmer
Game Designer
UX
Producer
Art Director
introduction & goals
Cube Rabbit Adventure was a 6 week project made in a 4 person team consisting of me as the sole programmer and 3 other artists. My main goal with this game was to continue to increase confidence in my abilities to create complex systems within a deadline. The one I chose for this was the Leveling & Experience system.
I succeeded in this goal and managed to build the game around it creating a cool progression system with unique cosmetic rewards that look amazing in game (In my humble opinion).
Not only that, I had previously been trying to implement a small GOAP system, and once I completed my main goal, I pivoted to trying my hand at another GOAP system and was successful in implemented one for this game to. This elevated the experienced and gameplay and I am really happen with how it turned out.
Experience & level system
Programmer / Game designer

What i did
Data-driven, event based level & experience system using Unity's UI World Canvas & UI Slider.
JSON saving of experience for cross-session progress persistance.
design CONSTRAINTs
Increasing experiences per level
Levels unlock items
Event-Based Architecture
Character customization
Programmer / ux

What i built
Cosmetic selection using UI Grid Layout Group tied to level up event progression w/ locked and unlocked states.
Cosmetic equipping reflected in character w/ smooth camera and UI transitions
DESIGN CONSTRAINTS
Player-level based cosmetic unlocks
Fluid UI motion design transitions
goap ai system
programmer / Game designer

What i built
Custom Goal-Oriented-Action-Planning (GOAP) system to dynamically determine AI course of action in real-time
Detector's poll or listen for event changes in world state to update Belief's
NPC's weigh potential actions based on beliefs, then chose an action to execute
Unity NAV-MESH Integration
design constraints
GOAP Framework for complex descision making
REFLECTION
KEY DESIGN ANALYSIS
Why Use Data-Driven composition for experience levels?
Over time I've learned that hardcoding configuration into systems will be fast for the short term, but bad for the medium to long term. So one of my current philosophies when designing my systems it to make much of the configuration data-driven so I can change it when I eventually need to change something
Data-Driven architecture allows for quick A/B testing without ever touching code, speeding up playtesting during experiementation and prototyping.
Why G.O.A.P.?
Because this was a medium term project, I wanted to accomplish at least 1 significantly difficult goal, this was GOAP. Although there are solutions on the asset store I wanted to create one from scratch and use it as a learning experience.
GOAP allowed for the NPCs in the levels to dynamically respond to the player and dynamically utilize their surroundings creating simple but interesting gameplay loop without hardcoding anything.
With a GOAP framework complete, I could easily add more potential actions, beliefs, while using configuration data to change and test them without ever touching code
WHat i learned
leading a medium-term project
Because I was the only one in-engine I was tasked with leading the team's development. And since this was a 6-week project my responsibilities were different than say a 48hr game jam.
One example of my leadership would be the main character's (the bunny) design. I directly tasked and communicated with our character artist with coming up with different iterations on the design of the bunny. We would communicate over the week to finalize a design. I would critique and add questions to direct the visual design to where I needed it to be. In the end it turned out great.
importance of feedback
During development I learned that I can very easily show my teamates progress I was making and ask for feedback.
Because is was a medium-term project I was able to procure feedback and make changes without needing to rush. Thus resulting in a better end-product












