🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Tower Defence - Post Mortem

Published June 17, 2018
Advertisement

Background

It's been a few days since I put my latest alpha of my entry for the Tower Defence challenge on itch.io and my project page:

itch.jpg.de6e8815d16b78bcd5acb075087caba6.jpg

https://lawnjelly.itch.io/ramsbottom

I think I've covered the requirements for the challenge, and made the game a bit above just the requirements so it is a bit more fun to play and has some longevity.

The reason I entered this time is because I'd been watching the previous challenges with a little envy, and had been waiting for one that seemed simple enough (I think the last one I looked at had multiplayer and I knew that could be a bit of a bag of worms). My usual low level c++ / opengl approach would probably be overkill for a small / low timescale game, so I decided it would be a good opportunity for me to try out Unity engine, which a lot of people are using currently.

What went right

1. Using Unity

  • Rapid development, well suited for this type of small game.

2. Attempting to get as much of the challenge completed asap, then leaving further time for more features / polish.

  • I finished much of the base functionality in the first week, then spent time on and off in the next few weeks just making it better.
  • There are lots of advantages to getting something 'finished' up front, and this is a development model I am trying to move towards.
  • You can 'call time' at any time, and still have a functional product. Unforeseen events always seem to appear and limit the time you can spend on a project. This approach guarantees that even in this situation you will still have a 'product' rather than a half-done version of your 'glorious vision'.

3. Using the asset store, not building all the models myself, and using sites such as freesound for the sound, and creative commons music.

  • For small learning games such as this it didn't make sense for me to make the assets. I know it takes me 2/3 of the time to make artwork etc, and while I am improving at it, I am better at (and enjoy) programming more than making artwork.

4. Finding some good tutorials to learn Unity (then throwing out their approaches!).

  • There are some great tutorials out there (brackys for instance), and these are good for learning unity specific stuff, but in some cases I could instantly see better ways of doing things. I put this down to many tutorials being pitched at total beginners, who are happy to get anything on the screen. But e.g. using Unity editor to lay out levels just seemed ridiculous and limiting.

unity.jpg.d5c7ac0c0f7f4d3df3548178a79f2902.jpg

What went wrong

1. C# .

  • I hate it, absolute abomination of a language. I spent more time than should ever be necessary screaming at the damn thing, it makes visual basic look like Shakespeare. I could write a whole blog post just on the things about it that make me seethe, but yeah, if I could avoid ever having to use it again, that would be great.

2. Monodevelop

  • Yeah, see point 1. Pretty bad. I might have to see if I can get another editor working if I use Unity again. I hear VS code may be worth a go (I'm on Linux). Monodevelop seemed really keen to reformat my code in stupid ways I couldn't turn off, and kept trying to autocomplete words incorrectly (that I also couldn't turn off).

monodevelop.thumb.jpg.2199848fd5acb95ea74b9d300a356a78.jpg

3. Lack of debugging support.

  • This may have been due to my setup, it might not be straightforward to get debugging working on Linux (I'm assuming with Unity it is possible to do step by step debugging?). This meant huge problems debugging anything but the simplest code (I had to resort to lots of Debug.Log statements).

4. Unity editor.

  • I'm not really a drag and drop sort of guy. I tried to avoid having half the game 'code' being a particular setup in the drag and drop editor. I'm not even sure how to backup that stuff, I'm sure if I'd have had a crash I could have lost the lot. Come to think of it, did I have to backup all the assets too? With all that .meta stuff? I don't know. At least with code you can zip it up small and keep lots of backups. There should be an option in the menu to save your entire project in a compressed form without all the bloated assets etc, just the stuff that is a pain to lose.

5. Unity build times.

  • I had massive problems with excessive build times taking hours when changing platform particularly, it kept baking lightmaps (or maybe something with shaders?) when as far as I knew I had tried to turn them off. Eventually more by luck than judgement, I found that deleting some skydome assets I had imported and deleting (rather than turning off) an extra light finally cured the problem. Far too little debugging info is given out by the build tool logs, to enable you to know WHY your builds are taking hours. Googling reveals I was not the only one with this problem. Don't just tell me 'baking lightmaps', tell me which light is causing this, which objects etc etc.

Conclusion

Overall I found the challenge very worthwhile. There are several of us working on it, and bouncing ideas around and spurring each other on works very well. Also a little hint of friendly competition is good too! :)


I managed to get fair basic grounding in Unity, and have a better idea of whether it would be worthwhile using in any future projects.. I may use it for a couple more small games, or evaluate some more current engines (Unreal, or perhaps something more code orientated).


Doing such small projects is also great for experiencing and practising the whole development cycle including release and marketing. This can give a much better perspective on how much time you should invest in different stages, and improve your ability to schedule / finish larger projects. It is something I would recommend to beginners through to advanced developers.

7 likes 10 comments

Comments

jbadams

Sounds like it was a valuable experience for you! :)

June 18, 2018 02:26 AM
Eck

Congratulations on finishing your jam. So many get started, but don't quite cross the finish line. I think your "What went right - #2. Get the simple version complete first, polish later." was a super smart move and good advice for others. :)

And yeah, debugging Unity with visual studio in a windows environment is dirt simple. Breakpoints, watch windows, Callstacks, etc. It basically plugs right into Visual Studio so you get a fully functional IDE. 

- Eck

June 18, 2018 09:05 PM
Rutin

Congrats on making it to the end. :) You really stepped it up by making such a quality game in a short period of time.

June 18, 2018 09:13 PM
Awoken

@lawnjelly "Overall I found the challenge very worthwhile. There are several of us working on it, and bouncing ideas around and spurring each other on works very well. Also a little hint of friendly competition is good too! :)"  

Great point, I think this is something that has been motivating me along this whole time but been unnoticed by myself until you said it.  For sure, I don't think I'd find the same level of satisfaction in doing this challenge if, well really, if it was for the 5 of us all encouraging each-other along.  Out there in this world there will probably be us 5 who care what the others accomplished.  

I've got to head to sleep right away, but I'll be giving your TD a thorough play-through.

June 19, 2018 04:54 AM
DexterZ101

Ohhlalala!!! your done bro!  Kudos to all of you guyz ^ _ ^ y   | <3 Awoken post

Need to catch a plane... ( I'll try to finish challenge even on the field : - D )

June 19, 2018 05:02 AM
lawnjelly

Thanks guys. Am excited to see how you guys games are coming on and looking forward to the next challenge!

10 hours ago, Eck said:

I think your "What went right - #2. Get the simple version complete first, polish later." was a super smart move and good advice for others. :)

Definitely. Time management / scheduling a project is something I definitely want to do a post on (not that I'm usually any good at it!).

June 19, 2018 07:53 AM
EddieK

Wow, congrats on actually finishing it! I gave it a try, and it's awesome! I really like the assets and overall aesthetics, also sounds and tiny effects you put in the game make it even more fun :)

June 23, 2018 01:23 PM
Awoken

This game is great lawnjelly.  I got right into it.  I decided to have a go on hard, cus you know.. why not, and after a few lives lost I came up with a strategy that seemed to be going my way until stage 8.   The boss on Stage 8 was a very strong boss.  He was able to knock out a tower from half-way across the screen.  Lost the rest of my lives once I got to that stage.  

Great idea having the enemies attack the towers to disable them.  I found with the random levels I was hoping each time to get a level that was conducive to my strategy. 

Over all really great game, good visuals, animations, sound effects and music.  And the fact that you were new to Unity and pulled it off in such a short period of time is impressive, to me at least.

Well done, I'll be playing this one till I can beat it.

On another note, thank you again for all your contributions regarding game play for my TD game.  I think the game is a much better game now than what it would have been if not for your feedback.  Much appreciation.

July 08, 2018 02:26 PM
lawnjelly
3 hours ago, Awoken said:

He was able to knock out a tower from half-way across the screen.

Yeah, that is actually the 1 and only majorish bug, that I never got round to fixing. The enemies store the ID of the tower they are attacking, and when an enemy destroys a tower, sometimes the IDs can get mucked up (as they get reused). It's a common referencing bug, but debugging in Unity without step by step debugging just made it such a nightmare I never bothered fixing it!

But the big boxer guys are really tough, they whack through your towers in no time.

3 hours ago, Awoken said:

On another note, thank you again for all your contributions regarding game play for my TD game.  I think the game is a much better game now than what it would have been if not for your feedback.  Much appreciation.

No problem, it can be really useful having an extra pair of eyes, especially because we get so involved with our own project we don't see the forest for the trees! :)

July 08, 2018 05:46 PM
nhold

Great job! I am very interested in a blog post about what you hated about C# as I love your style of writing.

August 01, 2018 01:40 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement