Saturday, March 20, 2021

Binary Trees



Binary Trees was a small scale project focused on experimenting with L-systems and procedural generation.

Below is an example of how the L-system trees grow.


    The trees are drawn by writing pixel by pixel to a texture. This is a slower method, but because of the large pixel size its not a problem. This method also makes changing branches colors, or even deleting whole branches possible. 

    Each system contains no randomized elements. Because of their simple rule system the trees could be bred together and modified in multiple ways.

    My favorite part of this project is the ability to cut of certain branches and pick them up. This would ideally allow the players to cut off infected branches before they spread to the entire tree. It would also allow for "prettifying" the trees, or to cut branches to use their "genetic code" to breed new trees.



 

Friday, January 15, 2021

Cooking Mama Cookstar

 


    Cooking Mama: Cookstar was my first professionally shipped game. I worked on the main development team at First Playable Productions. There I:

  • Iterated on minigame design
  • Implemented new minigames
  • Iterated on motion control for switch and input backend
  • Reworked the audio system
  • Helped port to PS4

Motion control was an uphill battle, we constantly iterated on versions and the clients had a lot of input as to what felt better. One of the problems we experienced was that motion would get tuned to individuals, so one person playing the game would do it perfectly while someone else would struggle. The game now notices if you are having trouble and adjusts the thresholds, but it may have not been enough in the end. I would have liked more time to tune these values.

One of my first tasks was to rework much of how audio is loaded and played asynchronously. I added a system to preload the audio, and later down the line iterated on the CMS for audio.

The Ps4 port went over fairly smoothly. We have interchangeable input backends per platform, so once the Ps4 one was completed, much of the work was related to Ps4 specific mechanics like trophies.

I worked closely with the art and animation team to implement what they desired. Overall I would call this a great learning experience.


Real Street Festival

 



Real street festival was a professional subcontract I had with IHeartRadio to develop a Android and IOS app for the Real Street festival, a two day festival with many big names like A$AP Rock and Cardi B.
I'm not really into the hip hop scene, but I appreciate the effort put into the festival. I was flown out and stayed mostly in the "command room" where people ran the festival. I was in charge of maintaining the app and sending push notifications.

The App was made in one week at the request of the contractor. I spent most of this time getting the camera working with filters. I decided to use unity for this project due to the limited amount of time. The App had a GPS map, a camera with filters, a vendor list, and a schedule. Each were updated on the fly. I used firebase and Natcam plugins to run the camera and push notifications as well as some simple analytics.

GhostRunner Study


This is a short project i used to study the game "Ghostrunner". I wanted to recreate the movement system in unreal 4 using C++. The animations were made in blender, and could use a lot of work, but the point of this project was to show my ue4 C++ ability. 

For the wall running, I just got the cross product between the hit normal and the players up to decide what direction the player should run. I also smoothly lean the player camera similarly to how the game does. 

When jumping towards a ledge, if the angle is towards the wall, the character attempts a ledge grab. A line trace is fired above the players head, and if it hits nothing a ledge is detected for the player to climb up on. 

For the grappling hook, I add force to the player based on a curve. I also added a particle effect so you could see what you attached to. While I was at it, I cropped out the grapple icon from the game and animated it as a widget.

For the projectiles, I made it so the aim is predictive. I used a method outlined here. I then simply made the bullet raycast over its delta to reliably get the bullet collision. If the player is attacking, it is reflected, otherwise it restarts the level.

Overall, this was a fun side project. I really liked the feeling of the wall running and grapple. If I had time, I would spend more time working on the combat.

Nes Study

 


This project represents a curiosity that I have had about NES games and how they function, as well as an excuse to gain a better understanding of low level programming in assembly. In the above video, i show the project, and break down the code.

I had a lot of fun learning about the NES's architecture and what memory addresses are mapped to what function. There is a lot of experimentation to be done, such as switching out color palettes at runtime or creating animation by changing sprites.

It should be noted that each sprite is 8x8px so the character is made up of several sprites. This was common practice.

I later went on to add vertical scrolling, but got tied up with work, so the project was left as is.

The Fields

  This page is under construction...




The fields is a large scale text adventure project written in C++. I wanted to add a lot of simulation to this game. This ideally would mean that I could use a level editor to craft experiences that are more based on the mechanical interaction rather than a more static experience.

The project has two parts. Firstly, the game itself which loads in world data from binary files and saves as you move between tiles. And Secondly, the level editor that those world tiles are pre-setup in. 

I would like to add some more interactions and entity types in the future. One thing I really enjoyed was the behavior system, as it allowed for decision making not just by NPCs but also by entities. For instance: there is a mechanism entity type reserved for items that can be "used." This can cover simple interactions like a water pump usage, all the way to a drone that autonomously scans the environment for anomalies.






TownyFrowny






>Github<

Towny-Frowny was a small scale project used to study games like dwarf fortress. My main goal was to have a excessively large area simulated and displayed on the screen. I created a system for pathfinding, tasks, behaviors, player input and task assignment, and some basic AI.

The world is generated and displayed with 8x8 pixel sprites. The amount of sprite ranges based on the size of the world, but i wanted to try and display at least 1,000,000 simultaneously. This obviously was too many to render every frame, so i instead wrote the sprites to a render texture once, and rewrote individual sprites when that tile updated. This did however mean that I couldn't make objects go in-between tiles.

I learned a lot about C++ from this project, and now that I have some more knowledge i would like to go back and clean up the code some day.


Undelivered


Itch.io

Undelivered was a week long unity vr project based on an idea i had in a dream. I really like the internet trend of  "Liminal Space", so i tried to add that concept into the games world design.

I had alot of fun working on the level design and "directing" the players movements with scares.

Code-wise the game is very simple, mainly relying on collision triggers. I wanted to focus more on the experience with this project than showing off my ability with programming.

A majority of the levels were created entirely in unity using pro-builder.