I am disappointed to say that I didn't meet the year-end target of an alpha release. I came very close and put in many hours of coding during my Winter vacation, however I lost my momentum after returning to work. Coming home from work has been leaving me drained, so I haven't been able to focus as well during the coding. Lastly, there has just been some laziness on my side, even on the weekends. This is evident from the fact that I haven't even written a post in two months. However, starting with this post, I'm making an even more conscious effort to stay disciplined with either the coding or just writing my thoughts.
Game Title & Icon
The working title is: "Party Quest"
I'm happy with the title since it captures the game design philosophy, as well as pays homage to MapleStory, which was game I put many teenage hours in. Surprisingly, I checked and found that there weren't any other games made with that name. The drew the pixel art of the icon to represent this was well; four figures opposing a menacing frowny face. The imagery speaks for itself.
Movement & Positioning
The most complicated mechanic in the game for me is the Movement and Positioning of the units. Based on the Pathfinding algorithm, the game space is represented as a series of xy nodes. However, at the same time, the unit objects are determined by xy-coordinates, which are far more precise. The Pathfinding algorithm (A-Star) calculates the shortest vector list required to move from Tile A to Tile B. This list is then translated to the apply movement to an object's xy-coordinates.
During my playtesting, it's common for all the units (both player & enemy units) to cluster together and make it difficult to precisely target a unit. Most games have "Collision", a mechanic that prevents units from being too close together. I developed various functions to add this, but they didn't quite work.
Some examples were:
- Add tile locations for all units to a list, which is treated as a "Wall" during the Pathfinding algorithm
- This didn't work too well initially, since the Pathfinding algorithm would need to constantly update to accurately account for the position of other moving targets. The Pathfinding function is very demanding, so running it so often for multiple units severely reduces performance
- Based on the previous approach, store all unit tile positions in a list. When a target location is selected, first check if a unit is already in that position. If that tile is occupied, perform an offset to update the goal.
- This essential when multiple units are attacking a single unit. Rather than clumping up on the same coordinate, the units spread out and encircle the unit.
- Add "Anti-Clump" function, which checks if a unit is too close to another unit. If they are too close, then they move apart until they meet the minimum distance requirement
- This idea worked out somewhat well. It was difficult in the code to determine which unit needed to move, and which direction they should move to.
Upon completion of this core function, the game engine is somewhat complete. I can now redirect more focus on designing the pacing and challenges of the game for it's first release.
Random Update
- I've been more consistent with working out, but not always with eating enough to bulk up significantly. My weight is still 140lbs, but I do feel stronger.
- I've been somewhat consistent with learning Mandarin. I use the "HelloChinese" app to practice vocabulary and grammar about 4 times a week. I'll try to bump it up to daily, so that I can accumulate the knowledge through repetition.
Comments
Post a Comment