Tower Defence - Post Mortem

1401 views

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:

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.

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).

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.

Sounds like it was a valuable experience for you!

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

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

@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.

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 )

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!).

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

Posted (edited)

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.

Edited by Awoken

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!

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

Create an account

Register a new account

• Similar Content

• Hey everyone! My name is Ryan.

Visualistic Studios is looking for experienced developers of all talents to join a game development team focused on completing contract work for compensation.

Work Description
Typically you will either be assisting the team or working on your own contract.
We usually bid $16-$25/h, however contracts can go above and below that so all pay grades are welcome, just be realistic.

Short Term Contracts
Long Term Contracts

We have the highest priority for these skills right now

Programming - Unity, Unreal Blueprints
Environment Artist
Character Artist
Character Animation
UI Artist
3D Asset Optimization

VR/Mobile experience is a plus.

The Process
All communication is done through discord. All tasks and design documents will be laid out in "HackNPlan" for organization.
Initially, you'll get in contact with me and answer a few questions so I can get a scope of your experience. Afterwards, our outreach team will start looking for jobs that fit your description. Nothing is guaranteed, but if we know you're interested we can start looking

Our Experience
For the past 3 years I've been working in game development contracting, and the past year I've been working full time from home. Since then, I've received more and more contracts and I'm now at the point that I have too many for myself to handle. This sparked the idea of creating a game development team for contract work! I've also been running my own hobby company for 5 years, and have a lot of experience in team management.

Get in contact!
If you are interested in working on these contracts, please get in contact with me. Send me links to your work and your hourly rate.
You can get ahold of me through email - "ryan.hobbs@visualisticstudios.com", or Discord "TSpartanT#4670"
Thank you everyone for reading, hope to hear from you soon!

• Hey Folks!!!

We have a great news for you, we just released a Demo that is our last version of the game before the Early Access on Steam! This is Version 0.9d. The game had several modifications, We hope you like it!
http://playriseofages.com/demo-0-9d/

×