Rebel Squad

Rebel Squad is a turn-based tactics fan-game inspired by RebelStar and Laser Squad - two 8-bit games that were the forerunners to the XCOM series.

I’ve wanted to make this game for at least 25 years and have finally reached a point where I believe I have the tools and ability to get it done. It is, by some margin, the most complex game I’ve ever attempted to develop. Without Defold, I likely would have never reached this point.

Overview
The game is a science fiction themed war game with each player controlling a squad of soldiers using their “action points” for movement, combat and so on. There are two teams, either of which can be player or computer controlled.

There are a number of scenarios with different goals - though wiping out your opponent is always an option to win. Each squad has a number of units, each of which can be equipped by the player and each has a list of stats which affects their in-game abilities.

Development
This is my third week developing the game full time. Most of this time has gone into creating the high number of UI elements and screens for controlling the game. I’ve elected to leave level design until near the end, once I’m happy with all the main mechanics.

Right now I’m working on the combat system which has a number of complex aspects, particularly “opportunity fire”, where an opponent can interrupt your turn if one of their units spots yours and they have enough action points to react. Getting a reliable and smooth system working for this is one of the harder aspects of the game to get right. Multiplayer is local to a single machine with each player taking turns at the computer.

I imagine the AI for computer players will be the trickiest part of the game to make. So, far I have yet to delve into this area, though have some rudimentary path-finding code ready to implement.

Timeframe
Given the present global situation, I’m quite happy to allow the game to take as long as it needs. I imagine this to be a “few months”. I’ve waited a long time to make this game so am going to do it as best I can.


There isn’t a great deal of eye-candy with this sort of game. Here’s an early screen to show broadly what the game will look like.

32 Likes

Looks great, eye-candy or no! I wish you the best of luck making your game a reality.

5 Likes

Laser Squad was one of my favourite games! I am so looking forward to playing Rebel Squad!

2 Likes

Steady progress has been made this week working on Rebel Squad. I’ve been delving into some of the more complex areas of the game for the most part.

Combat
The ‘fire screen’ is mostly finished. When a player enters fire mode, the main display switches to an overhead tactical view showing targets and obstacles as silhouettes. The player then places a crosshair where the fire should go. Depending on the accuracy of the weapon used, there will be some variance introduced but, I hope, in a fair way.

One of the biggest challenges was preventing explosions from penetrating solid walls. This was eventually achieved by raycasting from the explosion centre out to each tile within the radius of the blast. Any ray that intersected a solid object was dealt with as approppriate.

Pathfinding
The ability to work out a path from any two given tiles is a must for a game like this. This function is primarily used by the computer controlled units but also within the interface for human players. A tile can be hovered over and the shortest path to that tile from the unit will automatically be displayed, along with the ‘action point’ cost. Fortunately a member of the Defold community has provided a ready-made A* pathfinding extension for anyone to use. This saved me a bunch of time and headaches.

Squad Screen
Most recently, I’ve begun work on the squad equipment screen. This will be displayed before each game and allows the player to select armour and other equipment for each of their units. A credits system limits how much stuff can be acquired for any given game and will vary depending on the game difficulty mode selected by the player.

That’s all for now. Thank you for reading.

15 Likes

Looks great! Can’t wait to play!

1 Like

it seems cool :+1:
what’s your target platform? are you going to make it for pc?

2 Likes

Targetting PC, yes. Demo will likely be also available as web build.

5 Likes

Hi Ben, I remember playing Laser Squad way back with my friends… such a brilliant atmosphere it created as you waited for the computer to have its turn and got the occasional glimpse of the enemy through windows. Top five all time favourite game for me.
Looking forward to seeing your game.

3 Likes

Rebel Squad has now been two month in development. In the past week, I’ve being working on lots of odds and ends for the project, which is now just starting to feel like an actual game. My current goal is to get the two player game full functional before finishing the computer controlled player code.

Much of the scenery in game is destructable. This greatly increases the number of sprites that need drawing - for every destructable object, a destroyed version also needs to be drawn. Whilst this is quite laborious, I felt it adds enough to the game to be worthwhile and also respects the games Rebel Squad is inspired by.

I’ve also added random drops to the game. Upon finishing the first draft of the initial level, I realised large portions of the level were somewhat redundant, with little reason for the player to visit. So I’ve placed some loot in those areas, giving motivation to go and collect it. This has also made me think more about how to go about designing the levels - though I feel, this will be more fruitful when the game is playable and I can actually see how the level functions during combat.

The scenario selection and settings screen is also in and working. I want to allow some degree of customisation of the game so the player can decided certain variables.

A number of other small jobs and bug fixes have been done this week, none of which are really worth mentioning specifically here.

Next week I hope to have a rough 2-player game working, it’s not far off right now but there are a number of fiddly things to do before it’ll be fun to play.

Thanks for reading!

18 Likes

Lots of loose ends tied up this week. Upon feeling the onset of burnout, I dropped things down a gear and focused on some simpler tasks - which turned out to bring a bunch of things together and make the game feel more whole.

In summary, the odds and ends done this week:

  • Grenades. Equip them and throw. They will detonate at the end of your current turn.
  • Medical packs. As expected, when used these recover a good chunk of health.
  • Victory points. Added for achieving specific things in game. 100 VPs wins the game.
  • Turn counter. There may be a limit in number of turns allowed in a particular game.
  • Cover. Moving a unit onto a tile with an object gives them some protection from incoming fire.
  • Shot decay. Some weapons (such as shotgun) have diminished power over distance.
  • Throw. Items can be thrown a certain distance dependant on item weight and unit strength.
  • Death drops. Items carried by a unit are dropped when they die.
  • Shadows have been added to the levels. Makes it look a bit nicer.
  • Armour now has a reductive effect on damage when a unit is hit.
  • Burden. The weight of everything carried by a unit affects their number of action points.
  • A few sound effects have now been added for various events.

As planned last week, a 2-player game is now playable from start to finish. Opportunity fire has yet to be implemented, as has all of the code for computer controlled squads. I expect these two will be the most technically tricky aspects of the game.

17 Likes

Very cool, I like the art style a lot. Also it looks like you’ve put a lot of thought into what you need to work on. Good work and I look forward to trying out the demo!

3 Likes

Less to report this time as I’ve mostly been drawing pixel art and designing levels. I’ve also mopped up a few bugs I noticed while playtesting the game.

There are four main scenaries. I’m also planning some smaller ‘quick game’ levels and maybe a procgen option to create simple random levels.

Next week I’m making a start on the AI and getting that to fit in with the existing codebase.

A few screens of recently made levels:

That’s all for now. Thanks for reading.

10 Likes

Will you also have the robot opposition like the original had in some levels ? I remember they were super accurate and had a lot of movement points.

Another similar game which I still own is Shadowfire
A good quality it had was that each character was unique and had their own special abilities.

1 Like

Adding droids is currently on the todo list. I also remember being stalked by Patrol Droids with 70 action points. Those were the days.

Thanks for the tip re: Shadowfire… looks like an interesting game from the same era as RebelStar.

4 Likes

Recent Progress

This week has been dedicated to working on the AI for Rebel Squad. Not true AI but we call it that anyway.

Basic functionality is working reliably. The computer units navigate around the map to the enemy positions, take aimed, snap or burst shots depending on distance to target and action points available, then retreat to cover. Whilst this all works as expected, there are a few issues.

Firstly, the units behave like absolute maniacs - think zombies in your average b-movie. They just pile into the hot zone and let rip. Forget spacing, flanking or anything sensible like that; they even shoot each other by mistake in the heat of it all. Whilst this is fun and intense for a little while, it does make for quite short games and the player can forget any attempt of achieving secondary objectives.

So, I have some further design work to do in this area. Likely have a way of confining AI units to a patrol area and only approaching enemies when they get too close. Also a way of interacting with fellow units to ensure reasonable spacing is maintained.

AI units can also reload their guns and if out of ammo, hunt round for fallen units to take equipment from. These are things you’re not likely to notice in the game but it’s good to have them in there.

Future Plans

Next week, I will be implementing ‘opportunity fire’. A mechanic that allows one team to interrupt the others go if they have enough action points upon spotting an opponent. As this interferes with the logical route through the game, I expect some fiddly code will be required.

Thanks for reading!

10 Likes

A difficult week and I’m glad it’s over. Difficult because I’ve been working on some fiddly aspects of Rebel Squad, namely the ‘opportunity fire’ mechanics. This difficulty was anticipated but turned out somewhat worse than I’d thought. Most outcomes behave correctly now at least, and I’ll mop up the remaining 1 or 2 odd behaviours next week.

As a break from this I also made a squad overview screen which displays your teams vitals - health and action points stats. This is something not present in Laser Squad and can be quite useful when hunting for yours units which have yet to take a turn.

Mid-week I elected to increase the resolution of the game from 1024x576 to 1280x720. This not only gives the player a wider view of the game map but allows me to fit in some more gui items into the extra space. This has really helped the overall feel of the game and I’m not constantly having to cram everything into such a limited space.

I’ve also given started to overhaul the graphical side of the gui a little. The buttons now look a bit more hi-tech and a little less ‘Windows 95’. I may add some more graphics to the menus and interface during the polishing phase of development.

Next week will be spent fixing various bugs and starting to polish a few things up a bit. I’d estimate the programming part of the game is at least 90% complete now.

Thanks for reading.

10 Likes

Great! So close to the release, I’m excited! :heart:

1 Like

Development demo has been released! The manual isn’t ready so have fun trying to work out what to do :grin:

8 Likes

Nice, but short, i’ve got a crash on PC Chrome.
Perhaps, heap needs to be raised, not sure. And can’t find crash dump file (does somebody know where is it located?) :confused:

2 Likes

the crash dump file isn’t as important on web, since you already see the callstack there.

The “OOM” seems to indeed be memory related (from Emscripten):

function abortOnCannotGrowMemory(requestedSize) {
 abort("OOM");
}
1 Like