Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Triangle Shooter Devlog #2

A topic by FutureInspireGames created Jun 14, 2022 Views: 389 Replies: 8
Viewing posts 1 to 9

Welcome to the second devlog for Triangle Shooter, my small survival, semi-roguelike, top-down shooter!

 I have been busy for the past weeks, so it has been a while since my last big update. Today we will be looking at the new building/wall system for the game. Instead of making walls by connecting squares together, players can now draw their walls from a grid, which hopefully makes building defenses more intuitive. I am expecting both the amount of walls you can put and the dimension of the grid to be upgradable.

Controls

When the player clicks the space bar, the game will pause and the grid will display around the player, letting them have the time to build their walls. Right click to place a block on a certain square; hold right click and let go to place multiple blocks. During this time, players can also buy upgrades from the shop. The system can be exploited if time was slowed , but players won't be able to cheat their way out of a situation if we stop time as a whole. 

This is the brief summary of the new system. The walls are there to help you defend against the growing amount of enemies as you progress through the game. Leave any comments on improvements we can make and how you feel about this new system. There are some fixes we can do with other systems (i.e. the player movement system) in order to make this building system fit more smoothly in the game (you'll see what I mean in the next update). 

Now for those game developers out there who are here to learn a thing or two, I will now dive deeper into my development and share my process for creating a new system.

Development





Before I do any coding, I am always drawing diagrams, whether that is inside the game engine or on a whiteboard. Diagrams help me figure out how to make efficient algorithms that achieve my goals; they help me find patterns that I can use in my code. 

There are three main parts to the building system: the grid display, an individual grid box's attributes, and the individual wall's attributes. Fortunately, I only needed to focus on two of these systems because the previous wall's attributes are exactly the same as the new wall's attributes (i.e. wall health system). 

I started with figuring out how I wanted the player to interact with an individual grid box. The main concept was that I wanted to make each grid box have a hover effect (i.e. a faded wall), have the ability to keep the hover effect if the player right clicks (in other words have the grid box wait for the player to release right click), and have the ability to spawn a block (paired up with my custom object pooling system). These three concepts seem pretty simple, but when considering all the different conditions you can have, it turned out to be a bit more complicated.  As shown on the whiteboard, I made each individual grid box subscribe to an event if the player is holding right click over them. Each grid box subscribes to the event with a method to spawn a wall on their position. So when the player releases the right click button, the event will fire and in turn all of the methods subscribed will be fired. 

The goal of the grid display algorithm is to efficiently create multiple grid boxes around the player, but there shouldn't be a grid box on the player. The main variable in the algorithm is variable dimension, which will always be odd. Though the white board is a bit messy with arrows pointing all over the place, what is written was almost fully transferred to Visual Studio. We start at the bottom left and work our way to the top; when we finish spawning all the grid boxes on the column, we move to the next column to work our way to the top again; the cycle repeats until we are done. From looking at those grid diagrams, I was able to find out that the middle (aka. the grid where the player will be standing on) will always be when variables and j are both equal to dimension divided by 2 (integer division). The other details revolve around making the system more efficient when we are upgrading the dimension size.

The whiteboard helps me plan out how I am going to implement a system. If I don't write my thoughts down somewhere, I will end up getting lost. The thing to remember is that the whiteboard shows your thoughts, so you should write in anyway that is understandable for you. The whiteboard outline isn't perfect, so there might be things here and there where you will have to code without the guidance of it, but it is the starting architecture for your system and you should stick to that architecture. 

I hope you guys learned something from this long devlog. I will try to post a free demo on itch by the end of the week. The full game should be done a week after the demo. Let me know how you guys liked the discussion of my development process; this is the first time I've done something like this. 

Thanks for making it all the way through! Always be active on your developing games!

Update:

I just finished the new player movement system to go along with the new grid system. I'll be posting tomorrow to show the new movement system in action and go over my whole process of developing the new system, so stay alert!

The team is reworking a ton of existing systems right now, and we're excited to show you guys what's new after each system is reworked. We were talking about ideas to expand the game to make it more enjoyable for the players, so, as a result, we might be pushing the release date a bit back. Although we're pushing the release date back, I am still hoping that we'll be able to create a demo for you guys to try out by the end of the week. The only thing I need to add is a working leaderboard system and we'll have a playable demo! 

I'm excited for what's to come...

Update:

Today we are going to talk all about the new movement system that works alongside our new grid system. The one problem with the new grid system was that we were having situations where the player was able to create walls that overlap each other; it wouldn't be so bad if the two walls were stacked exactly on top of each other...but this situation is talking about when they are not exactly on top of each other. This makes the game feel uneven and weird, and it is all because we have "free movement" in our game.

The solution is to "limit" the player's movement or force them to move a certain distance. In short, we changed the player's movement so that they move in a grid-like way, as shown above in the thumbnail. Not only do we change velocities to go in our desired direction, but we calculate the "closest destination" in our given direction. So if we were to only slightly tap our 'D' key, we would not slightly move right, but we would move an entire unit to the right because that is the "closest destination" in our given direction. By doing this, we are able to move on the same positions that walls can be placed; therefore, we can always perfectly align our walls to be side by side. Concepts like these make it fun to do game development and also make it satisfying when you finish the task. 

I faced some problems when creating this system. One of the bigger issues was one where the player would get stuck when they hit the boundaries. The reason this happened is because of how the new movement system works: the player cannot switch directions until they reached their current direction's "closest destination." In other words, we couldn't move when hitting the boundaries because our "closest destination" was outside where the player can go, making it impossible to switch directions. In order to fix this, I implemented a timer that sends the player back to their previous destination if they can't make it to their desired destination in time. Because our game doesn't have anything that would otherwise slow down the player from reaching their destination, this cheap system works just fine. In some cases, you can get away with cheap systems and no one will notice; you don't need to over complicate things that players won't see.

Other than that new movement system, we added some polish to our game:

- Disabled Shooting and Moving when in a building state

- Disabled Building State when you are in the shop

- Slowed down time when in a building state

- Created a grid dimension upgradable (the Facebook icon in the shop that increases our grid dimension by two)

- Made the shop slightly prettier

Right now, our team is working on abilities/power-ups and a level system. The cyan slider that you see in the video is the new EXP bar. We decided that we need to work on the player's abilities before creating new enemies (at least for now). I am thinking that we will add in enough abilities to release the game, and then we'll keep adding more abilities after release to keep our game new and exciting. We are still deciding how we will be calculating scores for the game in order to implement the leaderboard system. If we still don't have any ideas by the end of the week, I'll be releasing a playable demo of our game without any score and just the timer. 

I'll make sure to keep you guys updated on our new systems in our game. Let me know what you guys think of the new movement system! Thank you for staying with us on our development journey! Good luck with your own development.

Update:

Hey guys. We are doing a rework on the shop system, which works parallel with the level system. Development is going well right now, and we're excited to show you guys what's new once it's finished. We are creating new power-ups and abilities for the player. We realized that our game needs to become more chaotic and slightly "luck based." Those two themes are what we are thinking about as we create new abilities and enemies. This level system will most likely be the last thing we add before the free demo! I'm going to try to see what my team can do today, and we'll go from there...

Besides that, here are some new features added since the last update:

- New Game Graphics (Color Palette)

- Fixed Coding Bugs (i.e. Camera Shake)

- Created Code Frameworks to work with the new level system and the reworked shop system


We now have a color palette for our game! I picked out a color palette online that is similar to the original colors, but are now more consistent with each other.  Almost everything but the grid system colors and the health bar has changed slightly in color; the most obvious changes are probably the background, the enemies, and the EXP bar. I feel like these colors make the game look more professional, but I'd love to know what you guys think. 

Leave your comments here about what you think about this color palette. I'll keep you guys updated on when this game has a demo.

(1 edit)

Not the official cover and not the official name

A preview of what's to come and our dream for this project.

Demo is on the way...

Concept art for the new system

Getting ready for devlog #3...

Not official gameplay

Current in-game progress on what you now know as the equipment system...

Update:

The New Equipment System is almost done! I've been going at it this whole day, figuring out what's the best way to architecture my code so that it can be reusable for future equipment. It was tough, but the hard part is now over! I can finally work on what really matters: the characteristics of each equipment; what each equipment does. You guys will hear from me tomorrow for Devlog #3 on the development process of the equipment system (we won't go too in depth this time though). 

I am really trying to push for a demo to be released tomorrow night, so please stay alert! It means a lot to me for you guys to just come and check out these posts on my development; it really gives me hope for this game...

(1 edit)

Update:

The official name of our game will be: DASHING ROCKET

I thought it is quite a simple but unique name for our game that includes not a triangle anymore but a whole rocket with different parts! Let me know what you guys think of the name and our new cover for the game! Equipment Devlog #3 is coming in an hour with some other important announcements for the future of thise game.