Ghost Cart Protection Service Post Mortem


PapaPolski's Prelude

Ghost Cart Protection Service (GCPS) originally started as an entry for Trijam 206. It was to be my third Trijam in which I'd make and publish a game in under 3 hours.

Whilst I have experience creating games in a tight timeframe, and have successfully completed two previous Trijams, I always struggle with one of the key parts of any modern video game; the graphics. I have close to 0 skill when it comes to 3D modelling, photoshop, paint.net, aseprite, or even drawing in general. My games usually have a... crusty appearance as a result of free-handed mouse drawing. Whilst I think this art style can work well in the right hands (or as part of something like the Low Effort Game Jam) I don't think it's been quite as successful for me in my more recent projects:

My Trijam 203 Entry

This is meant to be a car driving through a field of rocks

I like working on projects alone as a way to unwind/test/improve my programming/game mechanic design skills, and this leaves little time for art practice/sourcing, especially with the tight timeframe. I never pay much attention to the ratings my games receive, as I am just happy to actually complete something (though I always read and appreciate all comments/feedback!) So for Trijam 206 I wanted to try something different and make a game that actually has art

 AQUISTION of ART

At the start of this project I went to one of the most reliable places one can source cohesive, high quality, royalty free video game assets; Kenney. An absolute legend for developers, I've always appreciated their work and recommended it as a resource for all beginners - so why not use it myself?

I downloaded the first Asset Pack which caught my eye  (Tiny Dungeon) and imported it into Unity. I knew that the Theme for the jam was "Just Another Copy" but I had no inclination whatsoever on what kind of game I wanted to make.  The decided course of action at the time was to get some practice using Unity's Tilemaps system, get comfortable with imported sprites and then to begin the development process later. 

After some trial and error, the Tilemaps were set up and I had created the rough look which would stay pretty much until the end of the project:

GCPS Level Screenshot

This is from the final build of the game, I unfortunately don't have any progress screenshots

I had a building in the middle of the screen encircled by train tracks in a desert location. I experimented with colliders in Tilemaps and build separate Game Objects for the building and train tracks. At this point it just kinda made sense to add a cart to the project and to see whether I could animate it to constantly move around the building. Once I had the cart circling the building with Unity's inbuilt animation system, it kinda made sense to have a player character with some top down movement.  With these fundamentals in my project it was time to consider the game jam and the theme - due to the time spent learning about Tilemaps and building the level I had no idea how much time I truly spent "on the project". If I abandoned what I had and started a fresh scene with the knowledge acquired, I could safely had constructed a game to match the theme and had the full three hours at my disposal. I decided to go with the second option and to just... keep working on this little scene I had going. I had another three full days if I wanted to create a game in three hours to be eligible for the jam.

Sequential Software(development)

This definitely-still-alliterated title references how the rest of the development process went. With the basic buildings blocks of:

- a cart doing loops

- a player moving around within a constrained building

- a small library of assets with the same theme/aesthetic

I just kept adding one feature/improvement after another, with no design plan, no written notes, no Trello board for production. This was very different to how I normally make my projects, but it felt very fun and freeing. To give you an example of this sequential development, it went somewhat like this:

- Since the cart is constantly moving, let's make it so that it's game over when the cart stops too long.

- There's a fountain sprite in the asset pack so maybe that could be like a refueling station the player has to prepare in advance?

- Ok the cart is moving around and will stop at the refuel station unless there's fuel, the player needs other tasks to provide the game loop

- There's a spear and anvil asset  in the pack, so maybe I can reuse the code for refueling the cart with crafting spears at the anvil?

- Now that there's spear crafting and spear throwing, the player needs something to throw the spear at

And this process carried on until the core gameplay loop was finished. This part of the project took roughly 5 days - some days constituted of 6 hours of work, some of 2. I sadly don't have an accurate hour count for this project - Development started on the 11th of February and concluded on the 20th, with some break days peppered in between. Roughly on the 17th of February I entered the polishing stage. The game at this time had all of it's mechanics in place, but lacked a menu, audio, game over functionality, and general core loop.

 Finishing Fun

It truly isn't. There's the 80/20 rule in software development, where the last 20% of a project can and will often take as long as the first 80% and it's easy to see why. This last part often lacks the fun and joy of creative problem solving and game design, and is made almost entirely of either fixing or improving. Nevertheless, aside from taking tutorial images (which I said I would do daily for like 4 days straight), it was actually quite an enjoyable process! 

I reused the scoring system from a previous game jam game (Some Dumb Boomerang Game) where your score is counted up per action you took and displayed on the screen one at a time. This time I also added highscores per each scoring category, so you can see your improvement over time.

Game Over Screen

Some new highscores achieved!

I find that presenting highscores in this way makes it more exciting to the player, revealing their accomplishments one by one before showing the final score. I started writing functions to display a log of all score changing events during a playthrough, but struggled with dynamic UI sizing so it didn't make it into the v 1.0 build. With the game over menu finished, I implemented a start menu which featured the tutorial and credits sections.

I also added a very simplistic character selection system - all it does is change the sprite of the player character, but I never had the opportunity to do that before. It would be fun to build upon this system: characters have different attributes/abilities and are locked behind certain goals throughout play. That's something for next time!

With all the tutorial information written out physically in my notepad, the last hurdles of development were the sourcing of audio assets and creating images to accompany the tutorial text. As mentioned above, I actively dislike using photo editing software so the audio came first. Let me just say, papa bless Pixabay. With some creative searching and Audacity splicing I was able to obtain all the sfx & music I jotted down on my notepad. 

Finally, with nothing else to be done, I had to do the tutorial images. At first I was going to mash them up from screenshots in Photopea, but ultimately I decided to create the images in Unity with gameobjects. This does look rougher and less professional, but hey... There's a tutorial!


Conclusion

In this concluding statement I would like to say thanks for reading! It's been fun to actively work on a project longer than a weekend and to actually publish it! (Cries in mountains of unfinished prototypes) It's been a valuable learning experience about task prioritization and a different approach to game development, a much more free-flowy one. While I don't think this will work for larger projects or for time-critical game jam games, I think I'll try to implement it more in the future and focus on naturally finding the fun within a game.

Files

Build.zip Play in browser
Feb 20, 2023

Leave a comment

Log in with itch.io to leave a comment.