KULA WORLD CLONE
Status
Start Year
Duration
Team Composition
Development Platform
Technologies / Concepts
Complete
2023
1 Month
8 Programmers
Native C++
C++, DirectX, GLM
OVERVIEW
After spending a semester developing our own game engines, many of the programmers in my Cohort teamed up to implement a game using one of these engines.
We decided to create a rough implement of Kula World; a 3D platform puzzle game from 1998 that involves the player moving a ball around 3D terrain to try and reach a goal.
Original Kula World Gameplay
WHAT I DID
My main developmental contribution was the axis-based movement system used by the player.
Since the player only exists on individual faces of cubes, full 3D mobility was not necessary. I decided to then reduce player movement to axis-based traversal. Player direction and position was stored as 2 vectors: facing direction and normal vector to the cube they are currently on.
Since only forward movement is allowed, movement could then be determined by checking if another cube existed either above, or in front of the player.
Calculation of Forward Movement by Player
Other than moving forward, the only other player input regarding movement was the ability to turn left and right.
Since the player’s location was stored as their current direction and the normal vector to the cube they were currently on, I calculated the direction that they would be facing after a turn by taking the cross product of these two vectors.
Calculating Value of Forward after a Turn
My other main contribution to this project was serving as the lead for the group.
From coordinating with the team as a whole to assign tasks, to working with developers individually to assist in designing gameplay framework, my goal was to help push the team forward however they needed so that they could focus on their individual development sections.
When assigning areas of ownership to the project, I focused heavily on each programmers specific area of interest and what sort of specializations they would like to pursue. I then divided tasks in a way that was not only fair to each developer, but also applicable to their particular areas of interests to help them further study their specialties.
WHAT I LEARNED
By far the biggest challenge faced in this project was using the original game engine to it’s fullest potential.
The game engine created was designed to be highly scalable and support super complex designs. However, the game we were choosing to make was relatively simple due to time constraints.
This created a constant push and pull with making sure the team was implementing in a way that used the engine and was scalable, versus what was quickest to implement for a given feature. It was important to know when to implement for scalability and when to implement for immediate function.
JSON Format Used for Level Creation