Jump to content
  • Advertisement
  • entries
    9
  • comments
    52
  • views
    2143

Entries in this blog

Tower Defense Indie Game Dev Blog #8: Tower Editing Menu and LASERS!

Hello again everyone! This week's start was kind of slow, but at the end of it I managed to add some features which I was planning to do for quite a while. The main feature is: tower upgrades! You can now upgrade towers using a little menu I designed. It gives you all the information about the upgrade such as its cost, damage, locking radius, shooting speed and gun rotation speed. Other thing I added is laser beams which have their own light sources so it looks cool when lots of turrets are shooting. It adds something to the feel of the game.  There are lots of other small tweaks and fixes I did related to tower placement/editing. Here you can see the gameplay in action:   As you might have noticed, as of now flying objects are tanks, this is because I haven't yet modeled planes or helicopters, but I'm planning on doing so. As of now there is only one completely upgradable tower, this is again mainly because I don't have the models yet. I should really find someone to help me out Anyways, that's all for today, I should better go and continue working on the game now, since there's still LOTS of work to do. So see you next week

EddieK

EddieK

Tower Defense Indie Game Dev Blog #7: Finished Rewriting The Game

All of this week was spent rewriting the whole game in Unity Engine. What can I say... It took me over a month to make a game in OpenGL + Kotlin, but it took only 1 week to learn Unity and do it there. I guess I'm a little bummed that I didn't start using Unity earlier. But at the same time I'm VERY happy that I switched. It made my life so much easier and programming in Unity is FUN!  What I've Done So I haven't implemented new features per se (except for particles), but only redid the old ones. But still here's a list of what I've done: Added collision detection (which was only few clicks in Unity) Added GUI (main menu, splash screen, resume menu) Improved pathfinding Added object placement Added new tower Added heath bars Added event management system Added sounds Added particles (enemy exploding) Added enemy waves Next Week This coming week I think I'm finally going to start implementing new features and make the game feel like a proper game. I plan to finish at least one fully playable level, but I'll see how it goes.   Thanks for reading! I'll see you next week!  

EddieK

EddieK

Tower Defense Indie Game Dev Blog #6: Moving to Unity Engine

Reasons to use Unity *Sigh*... After over a month of programming the game in Java /Kotlin and OpenGL I finally decided to move to Unity game engine. This is very frustrating, but it seems I have no other choice right now but to rewrite the whole game. There are few reasons as to why I chose Unity instead of hard-coding everything in Java/Kotlin. First of all, the development pace is faster. It took me whole day to implement shadows in OpenGL, but it takes only few clicks to do in Unity. Other major reason is that if I ever decided to team up with someone to make a game, it would be much easier to find people who can use Unity to make games than people who use Kotlin and OpenGL (Ort least I think so).   Progress After only two days of learning Unity I was able to: Implement turret placement logic Implement pathfinding Make the enemies follow the generated paths Conquering my ego I always had a problem with my ego which resulted in me always doing the hard approach to all the problems. I always wanted to solve problems by myself and reinvent the wheel. I never considered using a game engine, because I thought it wasn't "real" programming. I'm stupid like that sometimes. But as the time passed, I matured and now I realized that a tool is a tool, and you have to pick the right one to solve your problem. In my case this tool is Unity, and I hope it won't let me down in the future.   That is all for today, thanks for reading! Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com

EddieK

EddieK

Java Tower Defense Indie Game Dev Blog #5: New turret and enemy types

This week Hello everyone! This week, as always, I fixed few bugs, did few tweaks and implemented small features. Here's a list of things I've done this week: Tweaked enemy prices and levels. Added object picking Added sounds and music Tweaked audio gains for different sounds and music Added capability of selling towers Added new cursor Implemented support for multiple enemy waves Added new enemy: Tank Added new turret type: Rocket turret Screenshots:   Important decision Yesterday I came to important realization while making my game. I realized that I need to build a fully working prototype of the game, figure out all the mechanics, implement all the tower and enemy types first and only then continue doing the minor things and polishing things up. I also realized that I should spend less time on music and 3D models. All these things will be done, but not now. I need to make my game fun first, and only then worry about all the assets. I don't want to repeat same mistake which I did with my previous games where I spent too much time on graphics, sounds, performance optimizations and too little time for actual gameplay mechanics. Problems There's one problem which I currently face, and it has to do with the "Tesla Coil" tower. As of now it slows down the enemies in its range, but there's a problem with that. The problem arises when you put the tower at the very end of the maze. When you do that, it not only slows down the enemies in its range, but it also slows down any enemies which came before them. This is because of the obstacle avoidance which makes it so that the enemies couldn't go through each other like some sort of ghosts. The only solution which I can think of right now is to remove this type of tower and replace it with something else. Next week This coming week I'll start thinking of and implementing all the different tower and enemy types. I might do some very basic 3D models to use as placeholders as well.   That's all for now, thanks for reading   Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com

EddieK

EddieK

 

Java Tower Defense Indie Game Dev Blog #4: Music and SFX

Hello again, everyone! Today is going to be a very short blog entry because all I wanted to show you is the new soundtracks which I created. As of now I only have 2 soundtracks, but I plan on making total of 12, or at least 10. The genre I choose is psychedelic trance. The main reason for it is because it's fast paced and I think it would suit my game pretty well. I also added shooting and exploding sounds which make the game just a bit more interesting. You can have a listen of the soundtracks here:       That's all for today, thanks for reading!   Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com

EddieK

EddieK

Tower Defense Indie Game Dev Blog #3: Lots of small improvements

Good day, everyone! This week I've been working on various small fixes, improvements and features. Here's an incomplete list of all the things I've done: As you can see there are quite a few commits related to performance improvements such as added frustum culling, improved memory usage, pathfinding improvements and so on. The one main thing that's missing from this list is the addition of the new tower type which for now I just call "the slower" which as the name suggests, slows down the enemies. If any of you have played the original Red Alert you might notice that for this particular tower I took inspiration from the so called Tesla Coil. The only difference is that instead of electrocuting it's enemies, it just slows them down. Here's how it looks in Blender: And in game: Also, for the above image you can see how the UI looks. It's still very primitive and will be changed later on, but for now it does the trick. It lets to select a tower and tell the game when you are ready for the level to begin. Another thing which I've been working on was music. The funny thing is the genre which I chose. It's psytrance I thought that the fast tempo and monotonic bassline would be suitable for this type of game.  After all, it is KIND of an action game. And the way I see it, when it's finished, there will be lots of explosions going on. Anyways, as mentioned in the list above, I also implemented placeholder main and options menus along with splash screen. This is how the menus look now (keep in mind they will be changed later on): Yes, very simple, I know. But they get the job done and it's still very early in development. One more thing which I added is money. You can now purchase towers and you will get money for each killed enemy. For now there's not functionality for selling the towers but it will be added soon. So that's all for this week. And for the next week, I think I will be doing 3D modelling and will be implementing new tower types along with other minor features.   Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com

EddieK

EddieK

Tower Defense Indie Game Dev Blog #2: Obstacle Avoidance

What have I done this week This week I have fixed few bugs and finally implemented a fully working obstacle avoidance system which makes my pathfinding and collision/obstacle avoidance system done. Some minor things which I did include: Fixed bug where text rendering causes lighting issues Added calculation of game entity's axis-aligned bounding box from data contained in .obj file Added AABB to AABB collision detection and response Added Ray to AABB intersection detection Made the map size resizable My own solution to obstacle avoidance problem I had really hard time finding information about an easy way to do obstacle avoidance in the way I wanted it to be. So instead I worked few days and came up with my own solution which works pretty well. I think I kind of reinvented a wheel and someone might have a better approach to this problem than I do. But anyways, it's already done and it works the way I wanted it to, which is all I care about now. What I wanted from my obstacle avoidance/collision system For the obstacle avoidance system I wanted it to do few things: Stop the vehicle if it gets too close to other vehicle If vehicles are about to collide (traveling towards each other at the angle less than the threshold angle) then make them steer away from each other Don't ever let two vehicles overlap I tried and I failed Before I explain how it works, I will say things which I tried and which didn't work that well. First thing I tried was to create a separate AABB in the front of the enemy's car and check if it collides with any other car. If it does, stop the vehicle. I thought this would make it so that the vehicles wouldn't get too close to each other and hence wouldn't overlap. Well, that didn't work. Because when both vehicles collide to each other, they will both stop and will get stuck. To fix this, I added an if statement which checks whether the vehicles collide at each other if so, make it so that only one of two vehicles would stop and other would continue driving. But this made them overlap some of the times, which I didn't want. So after thinking for a while, I decided I should add AABB collision response, so that when cars hit each other they don't overlap, but get pushed back. So I did that and now it works pretty good, BUT if the vehicles are travelling towards each other there's no way of knowing which way to turn to avoid the collision. So I decided to scrap this AABB in front of the vehicle approach and try casting rays. Approach which worked My last and final try was to use rays instead of AABB to check for collisions with other entities. This time I say entities because I also want to check if the ray intersects the towers as well, this way we will know which way the vehicle can turn to avoid collisions. So the way I do it is pretty simple. The vehicle casts number of rays from its center towards the front of the car which check for intersection between towers' and enemies' bounding boxes. Then I have a function which does some magic and calculates (from the ray intersection information) which way the vehicle should steer. This steering is only done if two vehicles are facing each other and moving towards. If they are not moving towards, I check if the ray distance is smaller than the threshold value and if it is I just stop the vehicle. There are other few tiny hacks and tricks which I did to polish the system. But this is mainly how it works. Next week I still haven't decided what I am going to do this coming week. But I think I will add different tower types, add GUI and make it so that enemies will spawn inside a building or in a hidden area from where they will come to the game's map. You can see the state of the game here:   Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com  

EddieK

EddieK

OpenGL Tower Defense Indie Game Dev Blog #1: 3D Models and Pathfinding

About the Game As you probably have guessed from the title, the game I'm working on is a Tower Defense type of game. At this point I'm still not sure what theme it's going to be in, but I think I will go with military based theme. The game itself is inspired by Red Alert, Robo Defense and Kingdom Rush. For development side of things I'm using Java/Kotlin (mostly Kotlin) + OpenGL and LWJGL with the IntellJ IDEA editor. 3D Models In the last couple of weeks I've been learning how to make 3D models using Blender. After few days of modelling I got hang of the basics and could model few simple trees, turrets and a car which I then imported into the game "engine".  Here are few screenshots of the models that I have created during those days:   Pathfinding I have programmed a pathfinding management system, which uses flood-fill pathfinding algorithm to calculate where the enemies have to go. The way it works is pretty simple. You start by splitting your game map into square nodes and then generating a gradient map which will tell how far away the current node is from the target node. To do this, you firstly start at the target node, assign its value to 0, then for all the neighboring nodes increment their value by 1, or whatever number you want, as long as its a positive number. If the neighboring node is non-collidable, assign its value to something very large, like 999999. To get the path from the start node to the current node you start at the start node, and select its neighboring node with the lowest value. Then for that selected node, do the same process until you reach node with the value of 0, which will mean that you have reached your target node. This is how the gradient map looks in my game:   Here you can see the numbers at the center of each node which represent its value. The cars are moving towards the surrounding nodes which have the lowest values until they reach 0, that's when they stop. Okey, so why did I use this method instead of the famous A* algorithm? First of all. This is heck of a lot faster. Instead of always calculating a path each frame for each entity. You just generate the gradient map once, and update it every time an object is placed on the map. The drawback of this method is that all the entities can only go to a single target destination. If you want multiple target destinations, you will have to recalculate the gradient map with different target nodes. Gameplay There's not much of a gameplay at this stage of development. As of now all you can do is place turrets, watch them shoot the enemies and that's pretty much it. Nonetheless this is the gameplay footage:     Twitter: https://twitter.com/extrabitgames
Facebook: https://www.facebook.com/extrabitgames
Website: http://extrabitgames.com My website: http://extrabitgames.com

EddieK

EddieK

Tower Defense Indie Game Dev Blog #0: Introduction and Previous Mistakes

Welcome! Hello everyone! My name is Ed and I am an indie game developer from Lithuania. In the past few couple of years I have developed 3 free to play android games and released them to Google Play. Although none of them succeeded the way I wanted them to, I learned a lot from my mistakes and I'm going to use this knowledge to my advantage while developing my next game. What This Blog Is Going To Be About? In this blog I will be talking about my game on which I've been working for a couple of weeks now. I will probably do weekly updates on the state of the project which will include any new 3D models which I have created, mechanics I implemented or features I added. I will also share what I have learned and what problems I faced whilst developing the game. Mistakes of My Previous Games Mistake #1: No play testing I realized this mistake only few months ago, when I released a game called "Killer Jack".  After the release one of the users commented that the amount of experience gained per kill is insufficient. Although it was an easy fix to make, I still should've at least found few play testers to make sure that there were no problems as such. Mistake #2: Not polishing the game enough I was guilty of not polishing my games enough and even releasing them with minor bugs. Also, due set deadlines, I skipped on implementing some of the features of the game. Mistake #3: Not doing any marketing Probably the main reason why my previous games were unsuccessful was because I did zero marketing. I had no websites, no social media accounts and no blogs for my game. How are the players supposed to know that my game even exists? Conclusion I guess I did most of these mistakes because I wasn't really looking at game development seriously, I saw it more as a hobby. Because of this, I didn't want to spend too much of my time on it, so I made short deadlines and so the quality of the games suffered. This time, I won't be making same mistakes. I will only be done with this game when I know for certain that it's fun, polished, well tested and bug free (if that's even possible).   My website: http://extrabitgames.com

EddieK

EddieK

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!