Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
LeekWars, program your AI to destroy your leek enemies (leekwars.com)
332 points by pil0u on June 5, 2022 | hide | past | favorite | 49 comments


LeekWars has been around for a while now. I remember having a blast playing it with colleagues at least 10 years ago.

From memory, as you level you get access to more and more API features. A good way to have a stronger leek was to manage to implement algorithms before they were officialy available to you through the API. Ex: instead of waiting to level up to get access to A* pathfinding, you could get a huge advantage against other leeks by implementing it yourself within the memory and cycle constraints you were given for your AI code.

Happy to see it's still apparently going strong...


Hello, I'm the developer of Leek Wars, thank you for sharing my link!

I'm from France and I've been coding this game with my friends since 2012 when I was in University. I try to add features and improve the language from time to time.

The source code of the game (frontend and fight generation) is available at https://github.com/leek-wars

Happy leek coding :)


I have loved playing around with this!

Two quick things:

- The documentation about classes in LeekScript v2/v3 has no English translation so it's not clear from that tutorial you can use them.

- Do you have a recommended way to handle version control and editing? Some way to sync from GitHub, or maybe an API to use?


Hello, thank you!

We are improving the English documentation/help and translating more pages :) The OOP in LeekScript is very close to JS.

At the moment there is no official way to sync your code, but LW has a REST API you can use to interact with the game programmatically. I would love to implement a proper synchronization with a Git repo in the future!


This reminded me of another fun programming game called Elevator Saga (https://play.elevatorsaga.com). Essentially, you need to write the code for a system of elevators to transport the maximum number of people in a given time.

It's a problem I've thought about every so often, but never bothered to look up how it was commonly implemented. For example, If you have a large building with multiple elevators, is there an optimal way to arrange the elevators while they're idle to minimize transport time? Or what about accounting for time of day? (e.g. stacking the elevators on the bottom floor in the morning as people arrive at the office). Or what advantages do you gain mathematically from having Up/Down buttons vs. the touchpads where people select the exact floor? Seems like an interesting problem if you work on elevators installed in tall office buildings.


I hear the sound of elevator engineers cracking their knuckles.


For those who are too young or forgot this hearkens back to RobotWar by Silas Warner on the Plato system in 1970s and later on the Apple II (1981) and there may well have been something from an earlier time on the old big iron. Does anyone know of anything earlier? I had so much fun on RobotWar and it had an impeccable source level debugger which was a revelation in 1981. I'm excited there are current code battle arena games.

https://en.wikipedia.org/wiki/RobotWar


Slightly later game comes to mind as well - Core War

https://en.m.wikipedia.org/wiki/Core_War


The ones I first played were P and C-Robots. It seems there was another Core War that's based on P-Robots: https://corewar.co.uk/probots.htm


If been looking for a game like this or Robocode but where the code that you need to write is written in Rust. Does something like that exist?


In screeps [1] you program your units in JavaScript, which opens the door to using Rust via WASM [2][3]

1: https://screeps.com/

2: https://github.com/rustyscreeps/screeps-game-api/

3: https://github.com/rustyscreeps/screeps-starter-rust


You can play Battlesnake (https://Battlesnake.com) in anything, Rust is quite popular.


This looks really nice. I'll try that out. Do you know more similar games? I.e. where the choice of the programming language is done by the player?


You might be interested in bot programming section of https://www.codingame.com/multiplayer/bot-programming . The programming interface is standard input output based so they support a lot of programming languages including Rust.

They also occasionally organize live tournaments lasting for a week or two, which introduce a new game. From the names like fall-challange-2021 and spring-challange-2021 I assume those happen no more than every 6 months.

In general the ones that are in form of temporary contests often support many languages due to same reason I mentioned before. One thing to watch out that due to sandboxing reasons and the platform needing to compile your code any third party libraries are usually not available. This might be slightly more painful for Rust and their crate based ecosystem.

https://en.wikipedia.org/wiki/AI_Challenge series used to be good but they are not organizing new ones. VK organizes yearly contests called "Russian AI cup" with very similar format as AI_Challange https://en.wikipedia.org/wiki/Russian_AI_Cup . Although participation currently might be messy due to the current political situation. Also the website isn't fully translated to English. List of old contents can be found here https://cups.online/en/contests/?category=ai&utm_campaign=to...


A fun programming exercise would be to write it yourself!


Reminds me of Terrarium, which Microsoft introduced with .net, to demonstrate you can safely run sandboxed assemblies in a single process: http://terrariumapp.github.io/


Reminds me Ants AI Challenge [1] which supported most programming languages. As far as I can tell LeekWars only supports "LeekScript"?

[1] http://ants.aichallenge.org


This reminds me of https://bot.land/

An amazing game for programmers but one that was shut down due to lack of monetization...


I immediately thought of Bot Land as well! Oh man, it's been a while.


Aw man, I made some truly OP bots for bot land. And a set up a custom TypeScript to BotLandScript compiler for them: https://github.com/mizzao/bot.land

So many improvements in that repo, that I didn't get to finish

Check out this video for how they wrecked 5v12 with 3 attackers / 0 defenders alive at the end: https://www.youtube.com/watch?v=50vIsSPFgUs

EDIT: haha, you're #4 in that screenshot on my repo!


Seems like a lot of new players don't know they start with upgrade points. I'm winning most fights with default code because I have 100 more health than the other lvl 1s.


Ah guess why that's why even the test runs have been impossible.


Me seconds before clicking the link, “I swear to fucking god if this doesn’t involve leeks fighting each other… I’m gonna be so pissed.”

Me immediately after clicking the link, “yes. Hahaha YES!”


If anyone is having trouble finding the documentation, the original link given from the intro page is broken but the "help" button will take you to the right place: https://leekwars.com/help/documentation.


The site is messed up in Safari (at least on my machine).


If you're referring to the pictures sliding off the edge of the central div, I think that's intentional.

The website seems to work fine in GNOME Web (tested on Epiphany 3.36.4 and Epiphany 42.2, which both use WebKit 605.1.15). I guess it must be a Safari only problem? Consider reporting your problems to Apple if the website doesn't work right on their browser, as the open source version of the underlying engine renders it fine.


Safari is messed up.


That may be but everything else generally works.


Normally I would agree but games are notoriously hard to get working in Safari (not to mention iOS Safari). It's basically a dead race and I never presume a game will work.


care to elaborate or is reddit leaking again?


On Safari (again on my computer), the first few pages of content are constrained to about a small area in the centre of the screen. It looks fine on Firefox.

Sorry, I'm not familiar with reddit leaking.


Is this intended for the Welsh market or can anyone play?


I was about to make a similar joke, but you beat me to it. I salute your humor.


I found it playable via in-browser Google translate.


This is amazing. I don't have the time to get into something like this these days, but I would've loved something like this in my teens. Instead I wrote bots for RuneScape lol.


Interesting, I will give it a try.

It reminds me Gladiabots (https://store.steampowered.com/app/871930/GLADIABOTS__AI_Com...), but the target audience is not the same.


Thought this was going to be some type of leetcode leaderboard, but it's actually way better than I hoped!


Another great coding game https://alexnisnevich.github.io/untrusted/

I spent 2 hours beating all 20 levels in one sitting.


I've played this game when I was 10, ans it was tons of fun and a good way of putting programming to practice. I definitely recommend it for any beginners, unless the skill level exploded somehow.


Also worth of mentioning is Torcs, a racing cars programing game. http://torcs.sourceforge.net/


How do they manage to run untrusted code on the server?


It's a custom interpreted scripting language. As long as the interpreter doesn't have any hooks for disk or network I/O, pointer manipulation, etc., it's pretty safe. You could go further by sandboxing in a VM or suchlike if you're concerned about incidental arbitrary-code exploits, but in reality it's not any more dangerous than running any other game server.


I don't know how it is done here but there are plenty of ways: VMs, sandboxes, etc...

There is no problem running untrusted code as long as the I/O and interrupts are protected, something that is a standard feature of all the CPUs and OSes that the server may run on... Unless you find a bug to exploit.


Which system calls would enable this protection?


Missed opportunity to call it LeekCode


Tired: Leetcode

Wired: Leekcode


mine won't compile. it complains about a core leek


Boo.


[flagged]


FIFO




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: