DevLog#1 - Too much things to say
Hello everyone, a few months ago, with my friend we started to dev a multiplayer game. It’s yet another autobattler, but this one is our own, and I hope this one might be different.
8 players fight each other for a dozen rounds. The twist is that each round, you might fight a 1v1, 2v2, 4v4 or some other combinations. Your last turn allies might be your future enemies. But in the end, only one player will be the winner.
A absurd lore for an twisted game
After a cataclysm shattered the floating continent into countless islands, war was banned to prevent further ruin. Instead, all conflicts are now settled in brutal tavern-hosted battles known as the Death Games. From shady dives to grand halls, taverns have become the arenas where glory, gold, and power are won—or lost. Adventurers flock to these chaotic brawls, each seeking to carve their name into legend. In the Shattered Islands, the tavern is the battlefield.
Small disclaimer
My mate and I aren’t artists and don’t pretend to be. I (Breep) myself am a dev. It’s been more than 10 years that some people pay me to develop things for them so I think I can claim that title. In this project I’m in charge of the dev and game design. My mate (Twiins) is in charge of VFX, 3D assets and game design. All that speech to say, for the moment, we use a lot of AI to modelize our 3D assets. In the future, when we will have a playable game, we plan to find an artist to work with.
The gameplay
Each round is divided in 2 phases, first you buy upgrades for your hero, then you fight against one or several other heroes.
Buying phase
During this phase, to make it easy (it’s not so much), you buy upgrades for your hero !
What changes with other autobattler is that during this phase you are not alone, you see other players in the tavern with you. Also, you can interact with them
Fighting phase
During this phase, all heroes automatically fight each other. This phase is divided into several sub phases. First you have some time to place your hero on your side (a fog of war hides the other sides). Then the player doesn’t control anything and the fight happens automatically. At the end of this phase, loser players take damage according to winners’ damages.
A short history
This project is already a few months old, so a lot of code has been written, and a lot has been deleted. The project keeps changing with the time, also I learned a lot the last months so I discover other ways to do the same things but better/easier/cleaner so that changes the code.
What is done
Card shop is on the server side, all client can buy cards from this shop
Card shop visual on the buying area: you can see how many cards of each type remain on the bar
Coin piles: you can see how much gold each player has on the table in front of their hero
Card shop UI: you can buy cards
FightingArea: characters from differents team fight each other
Basic behaviour of bots
BUT
A lot of things have to change. As the project is getting old, we are more aware of the challenges, the main challenge being the multiplayer. So my friend and I changed our vision of this game. First it was possible to move during the fighting phase, the code design was: the server runs the fight on its side, receives demand for movement from players and replicates to all other players if ok. This made the server send a lot of information to the players constantly (quite a normal behaviour if the game was a real time multiplayer but it was hard to handle, also the game design was not well finished and we decided to remove this movement feature. So now, I can code a real autobattler, which means that I only need to send the same random seed to all my players and they can generate the same battle on their side. But this also brings some challenges, the main being to have a deterministic code.
This week devlog
Anyway, this challenge, I will work on it later (very soon). First, let’s talk about this week’s job.
This week, I changed all my Character Nodes. The main issue was that my Character node was not very easy to use for testing and also configuring. It was generic, which is good, but also increased the complexity of the code. So I changed it, now all my characters (heroes) are now independent, they inherit from the Character class which inherit from the Entity class. They can be instantiated easily by drag and drop the node on my scenes so I can test them easily. Also it will be easier to write some specific code for each hero this way.
Then
Now
I also created a scene PrototypingMap to be able to test directly my heroes and cards without having to launch a full game (connect clients or bot, find the cards inside the card shop, wait for fighting phase to start). In the inspector on the right you can see that I can select cards for each player deck.
I am starting to write my devlog waaaay too late on the project so I have a lot of things to say and I can’t tell everything in one post because it would obviously be way too long. But, if you are interested, I can present you how I made my TargetManager (how all character can choose their target) or how the card shop work in multiplayer for example, or anything you want
I hope next week I will present how I successfully made my game deterministic (or how I failed to :o)
xoxo
Breep