Chess Battle is now Artillery Royale!

Chess Battle renamed into Artillery Royale

Finding a name is a very hard task, and for a non-native speaker even harder.
I thought I had something with Chess Battle, it’s distinct, has some meaning and straight forward to spell. Not bad.

Unfortunately on some very early blind play tests people got confused about the name.
Some warned me that they were not good at the chess game and were hopping that the game did not need much chess skill.

RED ALERT!

Even if at the start, the chess theme sounded great for me, I did not think about that.

A game of chess is hard, and for most people, not even fun to play with. In that way Chess Battle sends a wrong signal about the game. And to be honest, it’s not that much chess related.

So here we are: Chess Battle is now called Artillery Royale!

Six minutes of gameplay

I wanted to give you some news, everything is going well and the development is progressing as expected!

You would get more real time news on the Artillery Royale discord, but I also want to maintain this blog so you choose your favorite media 🙂

Six minutes of Artillery Royale gameplay

It’s still an early alpha here, the final game will feature multiple character classes, more weapon, more map type, etc.

Artificial Intelligence (AI) – Part one

Graph showing Cumulative Reward

A demo for Artillery Royale is planned for the end of September.

At first, this demo would have been a two-player demo only, but quickly I realized that this won’t make much sense for most of the players because right now there is no network support, nor enough players.

So if you want to play the demo you’d have to be two in the same room, playing turn by turn (something that is intended when the game will be done but probably not ideal for a demo where I want quick iteration and feedback loop).

On another hand, I always thought basic AI would be a pain to code and not fun to play with (because it’s based on a set of rules, the player can understand and predict them quickly).

So what was the solution?

Fortunately, we are at a time when you can use “real” AI in your games now. Real like the one in automated cars, or the one which won at the Go game. That kind of real. The one that you can train yourself giving rewards to get a neural network in return. The one that is mostly unpredictable, creative, and fun to interact with.

I mean, that’s the theory.

That being said, it’s still a hard topic. AI development is fun to play with but hard to get right. And to be honest, I’m a total noob in this area. I understand the basics and how it works as a whole but implementing it is something else.

Fortunately, Unity has some good pieces in place to help you start, they included a good toolkit (API) and some tutorials too. I thought it will be easy to apply their example to my specific problem but OMG that was way harder than I thought.

I had a first very naive approach, using what I’ve just learned in a good tutorial and thinking that it will be quite easy to apply to my own problem. Not true. I had to refactor all the code first to make it work with multiple environments (but that’s a detail), I’ve also had to think hard to get a good rewarding system and implement it. Find how to express AI objectives and translate that to code.

When this was done, I had some AI training going on, and to be honest it looked like it could yield some result. But I found another problem: computational power. My old Macbook Pro is, well, old and does not have the needed CPU power to train an AI model in a reasonable time. After a lot of internet searching, I found out that my objective is too complex for my AI model anyway (no matter the power of my computer).

Note on the hardware: at some point, I was looking to pimp my MacBook with external GPU thinking that it would help. I discovered that it won’t. Tensorflow the software used behind the scene uses Nvidia GPU only (and fallback to CPU otherwise). Unfortunately, Nvidia and Apple are at war (and thus not compatible). So it won’t help.

Getting ready for part two.

Today I designed a new way of getting an AI to work. After my search, I found out that people split their objectives in small chunks and train multiple brains. Then they add some code to switch those brains during the gameplay. I’m hoping that way it will work.

Also, Unity contacted me because they have some AI Training Cloud in their roadmap and they may provide that service in the future. Hopefully, they will let me try it soon.


A demo for Artillery Royale is planned for the end of September.
Join the beta ⤵️

Doubts

When I spend too many hours on Artillery Royale trying to solve a problem or even iterating, sometimes I fall into periods of doubts.

I play my own game and I don’t see what I’m looking for. It’s not fun, not pretty, not well balanced. Full of bugs. In a word: it’s not good. From here it often escalates to the point where I realize the amount of work left. I feel overwhelmed. I don’t know where I’m heading to.

Mentally it’s hard to handle. The only solution I found for those moments is to step back a few hours, or even days. And hopefully, when I’m back to work it’s gone and I’m full of faith again (so far it worked like that).

I guess looking back at the accomplished work help too, hence my previous post about current progress.

I thought it’s important to share those bad feelings too because as indie developers we face many challenges, but self-doubting seems to be one of the worst (at least for me).

Do not hesitate to take a break!

On that note, it’s holiday time for me, see you in a couple of weeks.

🏖

First months progress

From the idea, through prototypes, all the way to a playable demo!
Let’s see how far we are after 4 months.

A little bit of history: Artillery Royale started in January, I mean, it’s been in my head for a long time but I started to write down some stuff in January 2020 and I decided in May to give it a go by working on it full time.

Also, because I know projects work better with a scope, I arbitrarily decided to fix a deadline for the first playable demo to September 2020.

May 2020

In may I was playing with Unity own Physics engine and thought it would be easy. I also used an asset that allows getting destructible sprite very easily but, rests assured, all this will be soon discarded.

I also had a first prototype of map generator based on bitmap at the time. See details here.

June 2020

If I remember well, in June I had my first game over the Internet with a friend. It was laggy as hell and I did not see how it could improve with my technical choices at the time. So I discarded all the networking part too.

I still was trying to get Unity Physics engine work the way I wanted, and it was quite convincing. I built a specifics scene to test all the parameters and stuff.

This is when I decided to implement the distance limit, here with a halo that prevents you to move more than a specific distance. After testing it for a while, I’m pretty sure it won’t end up in the game in that form.

I also iterated on the map generator, positioning destructible objects and ammo/health bonus boxes.

July 2020

What an exciting month! In parallel to coding the game, I was also looking for a designer to help me work on the game. I found someone that has the exact style I wanted and he accepted to work for me.

We can see in those videos some of his concept art. Except that I started to tackle the hard problem: implementing my own Physics engine.

August 2020

With Jean-Baptiste, we settle down on Anima2D for the character animation and it’s pretty cool because I had some time to test some sort of ragdoll animations — something I always wanted to have — on this video, it looks stupid and full of bug but the final implementation will be great. I also worked on my own Character movement controller.

In the last video, we can see that I started to integrate the final art from Jean-Baptiste. The map generator has to be tweaked a bit more too.

To be honest with me I’m not even halfway to have something ready but I hope that in September I’ll get some sort of demo.

Fingers crossed

🤞

Character Movement

Today I spent way too much time on my character movement controller. It turns out, this part is more complicated than I expected. But it’s so important to get it right, that I took the time, and spent a bunch of days working on it.

At first, I was a little bit disappointed that something so basic was not included in the game engine. So I browsed the asset store and tried a few assets with no success.

The problem, kin of “as usual” is that I want something very specific with a certain feel to it, and even if most of the assets were configurable I never found the right combination. I decided to give it a try myself.

I’m a little torn, in a way it was not so hard to do, but on the other, I had to deal with so many cases. As you may know from my article on my technological choices I decided to handle most of the physics myself. So that was some work to get the character to collide with stuff and bounce when projected.

But it’s done.

  • I implemented left / right move
  • Jump (and double jump) in player physics controller
  • Handled pretty much all collision cases, including when hitting multiple walls at the same time (or when falling, jumping)
  • Implemented distance limits (because in Artillery Royale, a character can move a certain distance regarding his class. Not sure that mechanic will make it up to the final version).