Hex based space/board game WIP
-
Hey all!
If you follow my #FuzeFridays on my YouTube channel you may have seen this already, but I thought it would be nice to have a WIP thread for this project!
PREMISE
So the overriding feeling I had making this game initially was "a 2D Elite". After getting into SHMUPs on the Switch I thought it would be cool if you had that mechanic, but also some RPG elements and the ability to travel around the galaxy doing missions and generally levelling up. From there I had the idea to incorporate movement around some sort of map, which lead me to think of some board games I'd enjoyed. My idea has finally manifested into the mantra "an RPG you can play in an hour"
INSPIRATION
I'm a big fan of board games and I'm taking inspiration from a few of my favourites for this game. Namely Eclipse and Xia which are superb 4X style games where you explore the galaxy by drawing random hex tiles - and also a bit of Mage Knight, which uses hex's for its board and a couple of other things I'll be leaning on. I also just generally like 4X games, space exploring games, RPGs etc. But I also knew I wanted an 'action' part to replace the combat (in Eclipse/Xia) to make it a bit more fun than a straight up strategy game.
MY BACKGROUND
I'm web programmer by day, and have used PHP for ooooooo about 20 years now plus I'd tried (and failed) to code in many different gaming languages for about 30 years lol. But then along came Fuze and my fire has been well and truly ignited. I've completed a basic Space Invaders clone before moving onto this game - but I'm by no means a 'clever' coder. A lot of the maths and some logic ideas I do struggle with, but I love to learn!
EVENTUAL GOAL
So the finished game I hope has the following features/gameplay;
-
On starting the game, you choose from 4 different classes of ship which will be weighted towards different jobs (combat, cargo, transport, mining)
-
You will then select a starting mission. My idea here is to have 12 mission cards, then you are dealt 3 at the start of the game, from where you pick 1 to hold. These will be generic missions like "Make X Amount of credits", "Mine X amount of resources" etc.
-
More mission cards can be taken during the game, with bonuses for completing them.
-
The main gameplay will start on the hex grid you may have seen. This already looks pretty close to my vision. You will start in the centre and all the hexes around you will be transparent, so you can see what is left to explore, but these hexes will 'fill in' as you 'discover' them
-
Initially your ship will only be able to make a jump to one hex away, but the plan is to allow an upgraded drive to jump 2 hexes. This has caused a headache though, see the updates below!
-
I also plan to allow scouts and/or scanners in some way that you can send out to a hex to get intel
-
Warping into an unknown hex is a risk. Each hex can be randomly assigned a few things, including enemies. There are 4 enemy types and a random amount of enemies in that hex. Some hexes will be empty, some will have asteroid fields to navigate and a few other ideas I have.
-
You wont be able to warp into a hex, find powerful enemies and jump straight back out to save yourself. Your 'warp drive' will have a short cool down period, so chances are you are going to take some damage!! This is where the 'scouting/scanning' comes in, which would mitigate the chance to what you are heading into. Like a level 1 scan may just say "Enemies Present", where better scans may tell you the type and amount of enemies... not sure yet.
-
When you warp into these sectors, each will have a random look each time you play with a different background and moon/planet combo which looks nice so far.
-
When a sector (thats what I'm calling the area you warp to after picking a hex) is clear of any obstacle - either by you clearing the enemies or negotiating asteroids etc, you will be allowed to land on the planet surface.
-
The planet surface will be where you can interact with shops, bars, vip lounges etc. There will probably be 1 'thing' on each planet for you to interact with.
-
You can buy/find new items for your ship. For this, I want to use the system from XIA, where your ship 'blueprint' is a square grid and each item/upgrade is a tetromino - which means as upgrades get bigger and more awkward in shape/size, you wont be able to fit everything onboard.
-
The plan is to allow upgradeable ships of probably 1 level (due to the "1 hour time limit - won't be loads of upgrade paths) which will increase your bay space, speed etc.
And thats the main crux of the gameplay. Travelling round the galaxy, taking on missions, earning money and upgrading your ship, with the eventual goal of taking on the 'boss' who is hiding in a hex. You can find the boss at any time (possibly, still floating this idea) but you wont beat him until you are upgraded enough.
Also thinking you have to have earned enough reputation (through missions) to be able to 'win' the game.
Every game will be randomised, so should be fun to play through multiple times with differing goals and stuff happening.
It's pretty ambitious I think, but its going well so far.
I'll make a new post below later regarding WIP so far and update it as I go on.
Hope you like the idea - if you have any ideas you think could be good, then please let me know :)
-
-
From the images I've seen on discord and your youtube channel, I am very very excited about this and can't wait to see more and more of it.
also the way you are attacking such a huge task after only doing one Fuze game has impressed me and my current game is now way more than another simple 1970's arcade clone. Thank you for inspiring me! -
@SwitchedOn this sounds and looks great! If you want any advice on shmup design shoot me a message and I'd love to help!
-
@Retrocade_media Cheers dude, I most certainly will do!
-
Defo going to try to do a decent update later when I get 15 mins, but after working on the project for the last couple of days, I've decided to abandon the action/SHMUP side of it. I just dont think I can do it justice right now.
The combat will now be resolved in a more static "Advanced Wars" kinda way and the whole game will have a more strategic feel!
-
So better post an update of progress!
This is the current combat screen. After realising that adding in a side scrolling SHMUP was a bit ambitious at the moment, I decided that actually, as I'm taking inspiration from so many board game systems, I should just make this a strategy game. So as per the last post, combat is now a turn based affair.
I'll try to explain the particulars;
-
Upon entering a hex (System) that contains an enemy, an 'initiative' system will determine who gets to launch the first attack.
-
If the player is attacking, they get to roll dice based on their current weapon load out. Every ship will start with at least 1 basic weapon, which is represented by a yellow die. A hit from a yellow die deals 1 damage. An orange die 2 damage and a red die 3 damage.
-
When rolling a die, a 1 is an immediate miss. A 6 is always a hit. Any number in between can be altered by spending power - 1 unit of power per increase in the die face, if you can make the die up to a 6, this will be a classed as a hit.
-
You will also have other items on your ship that will add value to a die roll (targeting computer will be worth +1 to any roll for example).
-
Once all your dice are rolled, you then can assign them to any ship on the screen. When in this phase, a small version of the die will be placed next to the first enemy ship and you can use the d-pad to move it to different alien ships.
-
Also in this mode, you will use the right stick (up and down) to spend your power to increase the die. Obviously the die cannot go above a 6 and if you reduce power it can't go below your initial roll. As you make these changes, power 'cubes' will be removed and added to the UI in the bottom left corner of the screen above.
-
Pressing A will lock in your die and fire the shot. The line in the middle of the screen is to represent the distance between the ships. Your shot will disappear at the line and then reappear a second or so later the other side of the line - in line with the ship you chose to attack. I like this, it works nicely!
-
Anything but a 6 will see the shot go past the enemy, but a hit with a 6 will deal the appropriate damage - destroying the ship depending on the 'shield' level the enemy has (0, 1 or 2).
-
Each kill will grant you XP and also a chance of a random bonus, credits or materials which can be spent on upgrades and repairs.
-
Once you have assigned all dice, the enemy will take their shots back in much the same way - with random actions behind the scene. Weaker enemies will have less chance of landing a hit and so on. This is the next part of the game I am working on.
-
You will have 'hull' points to absorb hits from enemies. You start with 2 (of a maximum 6) hull points, but again, upgrading your ship will give you more hull points
-
Your hull can be repaired after combat (at a cost of materials) and I need to design a system to restore any power used between combat. It may just auto refill to its maximum after combat - or may need a system - like 'buying' power back, recharging at a recharge point, or spending materials. I haven't decided.
I'm pretty pleased with all this progress this week. Ok, its still all been focussed on the combat screen, but lots of little things are coming on and I'm particularly pleased with how you assign the mini dice to enemies. Its just how I pictured it working and its really rewarding to get something in your head onto the screen.
Generally my Fuze skills are up and down. I still feel I'm fighting the editor at times, with a lack of find/replace not helping and the odd random crash - which thankfully hasn't cost me any code. But I also am not helping myself by shying away from using Functions as much as I could and my code is getting a bit intricate, so I'm really trying to at least comment as much as possible and use bookmarks!!
Anyways, that's the update for now. Hopefully show off the above gameplay in this weeks Fuze Friday on the channel.
Any comments, ideas, suggestions gratefully received!!
Oh and I still need a name for the game, I'm tossing around a few;
- Into The Black
- A Thousand Points of Light
- Void
I dunno... for now, its "Project Strawberry" :)
Till next time, Pilot out.
-
-
This is an outrageously cool concept, so well thought out. I'm very excited to see how it goes and very much hope we can help where we can to make this game a reality. It sounds incredibly fun.
Name wise, I like all three of your suggestions. I thought of
Sector-HeX
Umbra Verge
Isotoxia -
Truly brilliant idea and I can't wait to see more of it.
-
@Dave said in Hex based space/board game WIP:
This is an outrageously cool concept, so well thought out. I'm very excited to see how it goes and very much hope we can help where we can to make this game a reality. It sounds incredibly fun.
Name wise, I like all three of your suggestions. I thought of
Sector-HeX
Umbra Verge
IsotoxiaOoooo brilliant names!! Thanks Dave :)
-
I like the concept a lot! On the dice roll though, I was wondering if it would do better as likelyhood to hit instead of full on miss below 6?
As in if you have a 6 it will definitely hit, but as the number goes down you can still hit an enemy, you just have less of a chance, and then a 1 misses everytime. This could mean spending those orbs could have more of a strategy, power up one to have a gauranteed hit, or take a chance that only a few will hit if they're all powered to 4 or 5.
Thats all, just an idea I had -
Also I just had another idea. The larger an enemy is the more likely lower numbers are to hit, but because it's a huge enemy unless you hit specific spots it'll do less damage
-
Thanks @Retrocade_media - the dice system is pretty much lifted 'as-is' from Eclipse, which is one of my fave board games and I think the system works well.
My only concern is spending power to get to a 6 and how quickly you might burn through that in the tougher combats, but then there is a retreat system if you get in trouble that I'm yet to implement.
I also don't want to get too complicated as I mentioned in last weeks video (I think, or the OP here!?) - I don't want combat to be the 'focus' of the game - its more about exploration and discovery. So I want combat to be pretty straightforward, but still offer some strategic choices (as to when to spend your power, who to target to get rid of them etc).
BUT.... your idea is definitely worth considering. It would certainly negate the worry of having to spend a lot of power and it becomes a bit of 'push-your-luck' then. Like "Ok, I rolled a 3, but I will risk spending 1 power to make it a 4 to have a slightly better chance of a hit"
I wonder how the the player would feel if they spend power, but yet still miss.... I guess thematically it COULD happen.
Definitely food for thought - thank you for the idea!!!!
-
@SwitchedOn Didn't see this originally! Advance Wars is one of my favourite games of all time. One of the best games ever made I reckon. The music!!
-
So little update, but more of a question for this post.
Things are going ok so far with the turn based battles (thanks to help at times from the guys in the Discord!) and now the back-and-forth is working quite nicely. I've implemented health bars for the enemies which are working ok and also the same for the player. Enemy hits can now have a % chance (depending on the level of alien) of hitting the player and reducing the hull value. This will all be tweaked after testing to find fair levels.
The question I'm stuck on though returns back to the premise of the game and 'what is it' in terms of gameplay. I'm definitely thinking a "4X" game, but I'm struggling to nail down some key principles.
At the moment, the uncovered hexes are randomised and can contain different elements - from aliens, to a planet and a planned asteroid field - they may also contain ... nothing.
I'm now thinking that every hex SHOULD have at least a planet and even if that hex doesn't contain anything else, exploring a hex will reveal a planet and then you can visit 1 of 2 random locations on that planet - stuff like a shop or a bar, a trading post or a lounge etc. Limiting the choice to 1 thing should make exploration interesting (though will need a reason/mechanic for the player not to revisit the hex and just choose the other option as well).... maybe they can, but then also it will need to 'cost' something - time, energy etc again to make it more thematic and interesting.
I quite like the idea of the board filling up with planets as opposed to them being dotted around the board (plan was to have 8-12 planets in total and there are 45 hexes).
What do you guys think on this? Could you let me know please!!
Thanks, Paul
-
Update time from this week.
I didn't get chance to post a #FuzeFriday on YouTube this week and I'm hoping that will be back to normal on Friday and I can show some more clips off, but for now will have to be text and images!
Ok, so the combat system has pretty much been finished, in terms of the back and forth of the turn based stuff. I still want to add things like enemies dropping things and getting XP for each kill etc - but also needs polishing with explosions, voicing, rumble etc. But that can all come down the line.
For now this is finished;
-
Firing at enemies and hitting them, reducing their health bars until a final hit removes them. The game detects which are still alive and only interacts with those - whether that's them firing back or you placing dice, removed enemies are now no longer considered.... with this said, see below for changes upcoming!
-
Enemies firing back. Each enemy will take a turn and a % chance of hitting you based on their race takes affect against your ship, removing a point from your hull if a hit lands until you are destroyed
-
You can now spend 1 power to activate a shield. This absorbs 3 hits from the enemy before disappearing. This all works nicely.
-
I've removed the 2 second delay of when the bullets hit 'deep space' and come out the other side. Its a nice effect but in practical terms, it was a bit annoying and combat is now significantly quicker for it which feels nicer.
CHANGES
With the above said, I will be changing how the player dice mechanic works. A few people have suggested it, including @Retrocade_media above, and after giving it some thought, I do agree it sounds a bit more engaging. In testing, I would often find myself with no power to change the dice roll and from then on, you are relying on only rolling a 6 to do any damage, which right now feels a bit frustrating.
So the new system will see the dice used to determine the 'chance' of a hit in the following format;
1 = 0%. Always a miss, cannot modify
2 = 25% chance of a hit
3 = 33% chance
4 = 50% chance
5 = 75% chance
6 = 100% chance, always a hit.Now these numbers may need tweaking once I implement it, but it feels like it might work. So Yes, you can still spend power to increase your roll, which now gives you a better chance of landing a hit. Meaning if you roll a 3 for example and only have 1 power left, before that was still a dud as you needed 3 more power to get it to a 6, but now, you can decide if its worth risking spending that power to increase your chance from 33% to 50% in getting a hit. It may JUST be enough to get the job done!!
I'm thinking of some ways to visualise this, but for now, I'm taking a break from the combat side as I've been working on that solidly for 2-3 weeks and felt like a change to keep things fresh.
SHIP SELECTION
So with that in mind, for something radically different, I decided to build the ship selection screen. At the start of the game you get the choice of 4 different classes of ships. Each has a specific ability - one is better in combat, one better for transport etc. I've got a different sprite for each and also started giving each different stats.
VIDEO OF SHIP SELECTION: <link removed>
This all came together quite nicely over a couple of days and works really well. It was nice picking a ship and then seeing it in the combat section rather than the usual ship I've been staring at for the past few weeks.
3 of the 4 ships (the 4th might, I havent decided yet - I may just give it better stats) start with a specific item for free. I.e. the fighter class ship starts with an extra cannon you can install, the mining ship starts with a drill etc. You can buy these for any ship, but thought would make sense to give the player one relevant item to start with.
Items are installed onto your ship blueprint. Each ship has a unique blueprint and again, varies depending on how it balances with other stats. I expect all this will need tweaking once in play testing, but for now I'm sketching stuff out and setting it up accordingly.
So the fighter ship is 'quick' (means it acts first in combat) and has 2 cannons (starts with 2 yellow dice), but has a low hull count - so can get destroyed easily and as its fast, is a smaller ship in terms of blueprint. The big hulking transport ship has a huge blueprint but is the slowest ship and has a low hull and 1 weapon etc.
The plan I had always was that the items would be tetromino shapes that you place in your blueprint, meaning you will have to juggle around the shapes and means you can't pimp your ship out with everything as it won't all fit.
I designed the blueprints for the ships using an Array of 0s and 1s. 0s being blank spaces and 1s being a grid square. Looping through these I was able to draw out the blueprints and you can see them in the lower right of the ship selection screen. I was super pleased how all this worked out!!
TETRIS!
Moving onto the next part was creating the items. I knew this was a BIG element of the game in terms of complexity, so I'm expecting this to take a couple of weeks to do, but hopefully it will be worth it. As its a bit of a big thing to get working, I've started this in a new clean project and will move it over when I'm happy with it.
As I said, each item is a tetromino (Tetris shape) which will represent 1 item and I'm trying to match the shapes to the items. For example, a 'Cabin" for transporting VIPs or Cargo I'm using the "O" shape tetromino (basically a 2x2 square) and a cannon will be the long "I" shape. A drill will be the T shape etc.
I started much the same as the blueprints, giving each shape an array of 0s and 1s and looping through to draw a basic square for each 1. After some thought and discussion with a few people on Discord, I decided to just create a new array for each rotation of each shape. There is probably more efficient and cleverer ways to do this, but its already going to take sooooo long to do, that I feel like I need to keep it simple where I can. So for each of the 7 shapes, there are 4 rotation arrays. This works well - on a press of R or L, the next rotated array is called and drawn.
So with that working, I then replaced the drawing of a simple box with an image from an asset in the Fuze library. This looks really nice I think, though I'll be looking through again to try and make each shape look more unique as there are only 3 colour variations at the moment.
With that done, I have a bank of shapes, 4 rotated versions, drawing them as images and the ability to move them around the screen with the dpad (switching shapes with A for now). So far so good, although really has been challenging to get this far.
All throughout this process, the consideration has been "how can I get the shapes to interact with the blueprint". This has been the biggest headache really. I've toyed with Sprites, level maps and the 0/1s arrays. Each I struggled to get working 100% how I wanted, so I was starting to panic a bit. In the end, there are probably 5 different ways that people would approach this and each would probably work ok, so I just had to settle for something I could manage with my limited skills.
Again, this isn't a 'this is how you do it' as its probably the low-level way of doing it and may even cause me issues down the line - but I hope it doesn't;
-
For each blueprint grid square, the X and Y co-ords of that square are saved in an array
-
As the 4 pieces of each Tetris shape is being drawn (at similarly X/Y co-ords), I'm then finding the blueprint array ID of that same X/Y co-ord. If I find a match (so 1 piece of the Tetris shape is in the same place as a blueprint piece - which really, they all should), I then check the blueprint piece using the ID from the co-ord array and check if its a 0 or a 1. If its a 1 - this means the single piece of the Tetris is sitting in a valid blueprint square
-
I then add to a counter if that is the case
-
After the loop, I then check if the counter == 4. Each Tetris piece is made of 4 parts, so if each part of the shape is sitting on a "1" of the blueprint, that must mean the shape is inside the boundary of the blue print. if one piece of the Tetris shape Is too high for example, then it may be the case that only 3 bits of the Tetris shape are touching the valid grids of the blueprint and then the counter checking for "4" would fail.
-
If the counter IS 4, then you will be able to press A to place the shape, else A will be disabled.
As I say, thats MY way. There are better ways for sure, but after a good few hours of playing with this, it now works 100% of the time for any shape, any rotation, so I'm happy with that.
NEXT STEPS
So thats everything up to date!! Sorry its a long read.
Next step is to put a dummy shape on the blueprint (probably will use a "2" to denote the blueprint square has something in it) and to ensure my shape I'm placing adheres to the placing rules.
The next BIG step now is to figure out how to put this into the game in terms of items. The player will need an inventory of items. I'll need to know;
- What the player has installed
- Where it is on the blueprint
- What this item "is" and hence what benefits it gives the player.
I'm worried about this step as it feels like another big layer of complexity on-top of an already very complicated set of systems and I fear like a house of cards its all going to tumble down and set me back.... we'll see. That will be the next update!!!
I post more regular updates in the discord, so if you want to follow more closely make sure you are on the discord and also post clips to twitter at times @switchdongames if you want to follow there too.
Hope you enjoyed this mammoth update! Please let me know if you have any comments, suggestions etc below. Thanks!
-