00:00
00:00
Xzontar

Male

Freelance Programmer

Joined on 6/25/08

Level:
9
Exp Points:
804 / 900
Exp Rank:
81,445
Vote Power:
5.12 votes
Rank:
Civilian
Global Rank:
> 100,000
Blams:
0
Saves:
8
B/P Bonus:
0%
Whistle:
Normal
Medals:
13

Workin' On a New Game

Posted by Xzontar - November 28th, 2023


Intro Stuffs

Okay, does anyone other than me remember the old flash game called Robostike? It was a multiplayer robot-arena combat game between 2 to 6 people where the goal was to kill all the other players in an arena full of deadly traps and obstacles. The challenge was that each player would submit 6 commands and then everyone's tank would execute them at once and you would have to try to predict what other players' moves were and how they would affect your tank mid-command.


It was hard, took lots of strategy, and was a complete blast to play. Alas, it was taken down, what, 10 years ago? I don't even remember; and their 'new version coming soon' website has also since disappeared. So, I finally said "Screw it! I'm remaking it myself!" And here we are.


General Visual Style

I'm a programmer, not an artist, so the visuals are going to be pretty simplistic but this is what I've got so far. A lot of it is temporary or will have a proper color pallet change before release. These were whipped up to give an idea while I was designing things and laying everything out.


iu_1121755_2482287.jpg

iu_1121756_2482287.png


What I Have So Far

I've been working on this in my very limited spare time for the last 2-ish weeks. I have finally gotten all the primary engine logic for the server and client completed which means from here on out it is just building up.


I have a very basic lobby system for chatting, creating, and joining rooms. In regards to game-play, I have player-to-player interactions, pushers, rotating tiles, pit-falls, guns, and bombs implemented. Getting killed will throw you into 'spectator mode' and that's about it. No fluff so far.


A real challenge was implementing the movement logic due to every player's action needing to be executed at the 'same time' and with equal priority. An example would be trying to move forward when there is a player in the way. Is that player moving out of the way at the same time? Are they stationary? Are they trying to move but hitting something themselves? What if the thing they are hitting moves as well? Maybe someone is shooting them and they get destroyed that move? Does an arena hazard push them out of the way first?


Trying to figure out how to handle these collisions with a large number of complex situations (especially when you can have 6 players interacting with each-other) was the biggest challenge. I ended up creating a 'processing layer' system for collisions where it would take all the players and record all their predicted positions w/o collisions. It then would check for situations where these predictions overlapped and then it would work backwards until the issue was solved. Repeat until all unit moves are covered. This entire loop would itself be layered to handle player movement, followed by movement caused by the arena itself until the 'arena's turn' was exhausted.


There are only a few cases where one player might lose out, such as if two players try moving into the same square at the same time. In this case I simply prioritize the player who submitted their commands first.


What's Left?

In short, a lot. However, for a basic level of game-play I think I'll be able to get something going within a few weeks. To get a functional playable state at the most barebones level, I still need to implement a turn timer, the 'tank boost' move, treadmills, 2x treadmills, 1x, 2x, and 3x wall lasers, and at least 1 item pickup type.


As the base system is all in place, building these elements up won't take very long to add, though, and most of the work is the client-side visual representation. Once these are all in place I will likely design a half-dozen maps to start.


The GUI and lobby interface is also very incomplete. Setting room details such as room name, map selection, and game-play mode are completely missing as of now. API work is also nonexistent at the moment but I plan on adding support for Newgrounds and GX.Games at the very least. That is still quite a ways off, however.


What's Planned?

While nothing is set in stone and I may drop things depending on how this project goes, I have a lot of bits planned. My goal is to get a base-level game with a simple free-for-all game-mode and 6 maps released to the public before Christmas.


For the future I will want to expand on the game-play a lot. I want to add a team death-match mode, and a puzzle / challenge mode. A big part of this will involve creating a level-editor for players to use and create their own maps. The scope of map sharing has not been decided yet, however, and I do not know if I will create a database for all this or just have it locally stored and shared for individual matches.


In terms of accounts I want to have achievements and ranked matches to give players a goal and reason to play. I already have the systems planned out in my head and the primary challenge will be linking the data to existing Newgrounds / GX.Games accounts. I have worked with achievements with Newgrounds but I have yet do do anything with GX.Games API and am uncertain as to its flexibility. Worst-case scenario I will write my own system and have peoples' accounts tie into it, which is likely going to be necessary anyway for the ranking system.


Can I Play It?

Not yet. The goal is to have something public before Christmas. I will upload something once the game is available but the timing could change. This is an 'in my spare-time' project and I don't have a lot of that at the moment.


Conclusion

I'm excited to get this game out there simply because I loved the original Robostrike so much. Even if not a single other person pays this mind, being able to play with my own family and just feeling the accomplishment of making this sucker is enough for me.


Anywhoo, thanks for reading this far, I'll likely post again whenever I feel I've made another significant milestone.


Tags:

1

Comments

Comments ain't a thing here.