Ludum Dare 31 — December 5th-8th, 2014 — Theme: Entire Game on One Screen

Back to Browse Entries

Automabot Battler

by NeiloGD - Compo Entry

Test your skills at implementing a simple AI program, and pitting it against a tougher robot!

This requires WebGL, and probably an alrightish GPU (May run on a Chromebook, let me know if it does!). If there is demand I may put together a Windows & Linux build for this, but my aim here is to avoid needing native builds anymore.

Each time you win, the tougher bot will take the AI you beat it with, forcing you to improve your own program more be it through brute force spam attacking it, or be it through simpler means by evading quickly, healing at the cost of some energy, or annoyingly circling it until you can blast it with a higher power weapon.

Each bot has both health (green bar), and energy (blue bar). Energy will charge, and is used for firing weapons and healing. This will also charge over time.

The program works quite simply, a single command is a "Condition" and an "Operation". Each condition and operation can have a value associated with them (to the right of them in the UI). This value is called (X) below.

The conditions available are:

"!" - Never do this. Used to do nothing.
"*" - Always do this. Will always execute this operation.
"E<X" - Do operation when enemy less than (X) units from you.
"E>X" - Do operation when enemy greater than (X) units from you.
"St<X" - Do operation when starting point is less than (X) units from you.
"St>X" - Do operation when starting point is greater than (X) units from you.
"At<X" - Do operation when an attack is incoming, and going to be within (X) units of us.
"He<X" - Do operation when our health is less than (X)%
"He>X" - Do operation when our health is greater than (X)%
"En<X" - Do operation when our energy is less than (X)%
"En>X" - Do operation when our energy is greater than (X)%

The operations are as follows:
"Set" - Set current state to (X). State is denoted by the number on the left of the command.
"M-X" - Move to within (X) units of the enemy.
"M-St" - Move to within (X) units of our starting point.
"AvAtX" - Avoid attack by moving (X) units out of its way.
"At-WpA" - Attack using Weapon A. Weapon A is fast, low energy cost, but low damage.
"At-WpB" - Attack using Weapon B. Weapon B is slow, high energy cost, and high damage.
"Heal" - Heal ourself (X)% by using some of our energy.

Downloads and Links


Ratings

#59Innovation4.07
#433Overall3.31
#535Fun3.10
#568Mood2.92
#574Audio2.67
#663Graphics2.93
#760Humor2.20
#972Theme3.21
#1550Coolness45%

Comments

Wezley says ...
Dec 8, 2014 @ 3:44am

Incredibly complex, I like it though.

igneousmoon says ...
Dec 8, 2014 @ 6:28am

Had a few goes, it's complex but you can create a pretty powerful bot if you refine for a while, pity that makes the enemy stronger too :P

NeiloGD says ...
Dec 8, 2014 @ 6:56am

Just don't make the bots *too* good ;)

mrexcessive says ...
Dec 8, 2014 @ 5:28pm

Hi there. Like the idea. I think it may need a simpler way in. Not sure much need for state label and go to state without any conditionals. Making player play their own algo at next level is a clever way to self-balance the game and keep it challenging. Good job!

NeiloGD says ...
Dec 8, 2014 @ 9:19pm

mrexcessive: The state stuff was sorta put in. Each statement also has an implicit conditional on it, so I've done an example that switches state in an attempt to only evade and heal (the fewer instructions the lower latency on response). I did want to make it a bit more complex and become more programmable by using a simple assembly language, but I felt that would have just complicated things further. Thanks for the feedback though, glad you like the idea!

NeiloGD says ...
Dec 8, 2014 @ 9:20pm

By sorta put in, I meant sorta forced in. Was originally just jumps but it was too complicated to work with reliably.

voxel says ...
Dec 9, 2014 @ 7:48am

This is certainly the most approachable Write Your Own Killer Robot game I've played. I like that you didn't over simplify to the point of stupidity, but I can see it being possibly too complex for non programmers. Nice work, would deathbot again

DarkEngineer says ...
Dec 12, 2014 @ 6:11pm

Nice idea for the game

Renaldo says ...
Dec 13, 2014 @ 2:31pm

It's fun to play, but it takes some time for you to understand how to control the bot. I got confused with the distance units and the spread and power of the weapons. It would be fun to see your bot battling bots made by other people.

snickersnacks says ...
Dec 14, 2014 @ 9:41pm

I'll be honest, this is way too complicated for me to want to play it for long. I have to keep going back to your entry page to reference the rules. It seems other people enjoyed it though.

6DownStudios says ...
Dec 14, 2014 @ 9:45pm

Really awesome idea! Team battles could be neat, 2v2, or even 8v8 with different area attacks (line, cone, etc). Might also be fun to set up a free-for-all arena with a bunch of randomized bots, and use the victorious bots' data as a seed for the next generation of bots. Natural selection at work!

Well done!

erik says ...
Dec 15, 2014 @ 8:09am

You've built a really cool system. I found it hard to get into it though. And once I did, it seemed like it was really easy for any bot that uses heal to stalemate really quickly. It also seems like the energy requirement on weapon b is way too high for it to ever be useful.

Lovelock says ...
Dec 16, 2014 @ 8:51am

Bonus points for an ambitious game concept. I always liked games where you don't have direct control over your characters and such. Sort of set it and forget it and hope you were clever enough to win. Neat idea. I'd love to see it refined!

Dec 16, 2014 @ 11:22am

I liked a lot. It has given me an idea for an upcoming game. Great job.

d3garcia says ...
Dec 22, 2014 @ 4:59am

I love the game.

Topaz Studios says ...
Dec 22, 2014 @ 10:06am

Really cool design base. Found it kinda complicated but I felt more at home with the programming inspired instructions, instead of the oversimplified controls most games give nowadays. Good work xD!

mohammad says ...
Dec 30, 2014 @ 1:05am

Complex but a lot of ways to dig into the game. I kinda like it.

freaknarf says ...
Dec 30, 2014 @ 1:59am

weird!!!

You must sign in to comment.


TEAMS: Teams entering the Jam should pick a single representative to submit your game, or create a team specific account you can share. We currently do not support Team Voting, but sharing an account and together playing and rating games is acceptable.

NOT LOGGED IN?: If you get a message about not being logged in, even though you are, it’s because your web browser cached the non-logged in page. You can fix this by either refreshing your cache or clearing your cache. CTRL+F5 in many browsers. Chrome is a bit more work. Press F12 to enable Developer Mode, then you can right click on the refresh button and select “Empty Cache and Hard Reload”. This option is unavailable if you are not in Developer Mode.

PORTS: Ports to other platforms can be done after the deadline. That said, the sooner you finish your port, the sooner people can play your game, improving your chances of placing in the final results. For best results, provide a Web version of your game, or a Windows version with no dependencies. Also be sure to rate about 20 games to improve your visibility.

MY GAME DOESN’T SHOW UP: If you can’t find your game, it’s usually because the URL to your downloads are missing ‘http://‘. Fix your URLs (http://mysite.com/mygame.zip) and you will show up. Alternatively, if you just posted it, wait a minute. The cache may not have refreshed yet.

MY GAME CRASHES, IS UNBEATABLE, OR I MADE A TYPO: We allow you to fix crash or win condition bugs after the deadline (in a sense, like “porting” to support more players). We also allow “typo” bugs. I.e. A true that should have been a false, a word that should have been a different word, very tiny changes that you would have caught if you had more sleep. We leave this open to interpretation, but generally speaking your game should be identical to the game you submitted. No new features, just things you messed up last minute. Typos.

[cache: storing page]