Lessons From Learning Unity, Making & Publishing My First Game


The Start Of the Journey:

I'm sure many of the game developers here on itch.io have been there at one point or another. Wanting to create something, something special, something new, fresh, or maybe even just something at all. But where do you start? What do you make? What is the point in making something that no one may play? How do you even get people to play it!?

Lesson 1: Work Within Your Limits

And the answer to some of those questions are easier than others. For example, jumping into unity isn't extremely hard. Within a couple days of having started learning it and C# I had already made Phys Jumper, a small little 3D platform which focused on fast paced, physics based jumping, where you spawned blocks to fill in your jumps. The game was fun, VERY simple, but it made me learn something important: a game can be fun even if your limited in some way. And taking what I had learned from that game, I set out to make Streets At Midnight.

Now at the time Phys Jumper wasn't published on itch, I hadn't even made an itch page, I barely knew what it even was. But I liked fps games, and figured I'd make one of those. I knew I had limitations in my knowledge of unity, I still do, but you should always have your limitations worked into your game design! For example I had no clue navmesh agents existed or anything about them. But zombies are an extremely 2D enemy in terms of AI so I figured if there was a time and place to learn it, it would be with zombies. The goal of knowing your limits is that you should know you are able to finish a project before you start. On a macroscopic level you should have some idea how the overall game will work. If you can't visualize that, reduce scope.

Lesson 2: Perfect What You Can

Now the above is not meant to imply that there aren't many flaws that show through in Streets At Midnight. For example the art is a mix of many different low poly free packs I found, with often conflicting and jarring art styles, but I had just learned Unity, adding blender to the list would have been far too much at once. Even now I can almost pull off a snowman. There's always something more to learn and you'll never get anything perfect. Thats why you need to make sure that the parts you can polish are POLISHED. To a shine, so clear you can see your face in them. I'm more than fine with critiques of Streets at Midnight's graphics, but the gunplay (in my opinion at least) I think I achieved beatifully. Each gun had different levels of zoom, different fire rates, damage drop off ranges, and recoil directions. While none of this is explicitly shown to the player, the feeling of recoil and responsiveness, as well as the feeling of different guns is the key that you to make the player experience. All the code, or art in the world will not save you unless you can invoke a feeling in your player.

Lesson 3: Value Player Gameplay Time Vs Development Time

If I could go back right now and redo this game, I would make it entirely survival maps (or rather I'd just make escape! all procedurally generated). The reason for this is due to the fact that linear maps and spaces take easily an order of magnitude more development time to make, playtest, and design. While I really think I knocked it out of the park with all the small details and tidbit in escape!, it's still only a 10 minute gamemode that players will likely only play once. This means I've spent a large portion of the game development on a portion of the game that doesn't even take up that much time. In the time it took me to make the streets map, I could have easily made two more survival ones. The lighthouse survival map is a good example of my shift in development style. By keeping the player on an island, it limited the amount of surrounding space I needed to create. All I had to do was fill the interior, add some details like trees and voila. No worrying about player viewing the empty nothingness in the distance. After all that is supposed to be there on an island!

Almost all your decisions should be about generating the most fun content for the least amount of development time. I'm not saying make a recycled content game, but make as much of your content reusable or replayable as possible. This is why the current game I'm developing: Strife: The Expanse is all procedurally generated. If done right, it simply gives you the most content for the least amount of dev time. Multiplayer is another idea, if the game has the right level of scope, it is a totally viable way to add replayability and fun to your game. Let the players and your game create the content for you. Hand placing assets and sculpting and environment is something that should be left to game studio's and not a lone indie working in their basement in their free time.

Lesson 4: Make Sure Your Page Is Nice!

Often times on itch, you'll see pages that don't stand out, or have very little content on it. Phys Jumper is one of them. And it's great that people upload their prototypes on itch because it means there are more games in the world. But if you want downloads and feedback and people to play your game, you need to put some effort in on marketing, and your presentation in general. You need a trailer and pictures that depict GAMEPLAY. Think about what you want to see when you buy a game? You want gameplay. For Streets At Midnight there were several things I really wanted to convey on the front page: It was an aim down sight shooter, it was very similar to cod zombies, and that there was enough effort put into the game that I was willing to stand behind it and make actual marketing content for it.

If you can't take time to create a page that welcomes the player, and shows them that this isn't just enough random game on itch, then that's fine, but understand that the prospective player will likely pass you by.

Lesson 5: Understand How to Build Your Workflow

This is a huge one when working within a game engine. Your goal when coding your classes and what not is to design things not only in a modular way, but also in a way that allows you to create new content from it at an extremely streamlined rate. Take the survival gamemode as an example. The zombie spawner objects I created were part of a prefab with the barricades on the house. When a zombie was spawned by the spawner, its target would immediately be the barricade that was part of the spawner/barricade prefab.

By combining the two prefabs (spawner and barricade) and making them into a pair, it became extremely easy to just drop them in, place the spawner where I want, place the barricade where I want, and let the game code handle the pathfinding and everything else for me. All the zombie spawners were also referenced in a wave controller object, this allowed me to adjust the stats and number of the zombies as waves went on for each individual level.

Honestly the most time consuming part of any of the maps made was the art. By release it was basically just adjusting objects' positions taking up most of my time as the survival gamemode's code was self encapsulating. This isn't bad, but again we circle back to lesson 3: ensure maximum player time for your development time. 20 hours for a map that takes 20 minutes to play twice is simply not enough as a solo developer.

Main Takeaways:

Overall this is my blob of info and lessons I've learned along the way. For only having started learning unity in september I have really come a long way and I am very proud of what I've done. I've gone from Phys Jumper, a 20 minute platformer to Streets at Midnight, a fully fledged (albeit small) FPS game, and now to Strife: The Expanse, a online, VR, controller supported procedurally generated turn based strategy game. Not half bad. Streets at Midnight will always be something I am proud of, because at the end of the day, I saw something through to the end. Perhaps once Strife: The Expanse   is out I'll come back and model another map for the nostalgia.

At the end of the day you need to be able to wrangle yourself in, sit down and work. I'm sure you'll learn your own lessons along the way (or have!), but the most important thing is to work on something. You cant make any progress otherwise. If you've read through this all the way to the end, thank you! If you haven't tried the game please check it out, I promise you will not be disapointed.

Other Games:



Files

streets-at-midnight-mac.zip 355 MB
Version 2020.11.20 Nov 20, 2020
streets-at-midnight-linux.zip 363 MB
Version 2020.11.20 Nov 20, 2020
streets-at-midnight-windows(32-bit).zip 348 MB
Version 2020.11.20 Nov 20, 2020
streets-at-midnight-windows.zip 351 MB
Version 2020.11.20 Nov 20, 2020

Get Streets At Midnight

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.