Share this project

Done

Share this project

Done
A highly customizable, open source, turn-based, tactical strategy web game written in ClojureScript.
A highly customizable, open source, turn-based, tactical strategy web game written in ClojureScript.
104 backers pledged $15,400 to help bring this project to life.

About

Zetawar project video thumbnail
Replay with sound
Play with
sound

$15,400

104

Update (7/13): Preliminary t-shirt designs with the new Zetawar logo have been posted here.

"It’s really exciting to see this come together. I’m looking forward to reliving the old days of Elite Command through the new and improved Zetawar." - Chris Vincent, author of Elite Command

Zetawar is a web based tactical strategy game similar to Weewar and Elite Command. In it players control armies of units (soldiers, tanks, etc.) on a map of hexagonal tiles. Each player takes turns building new units and moving, attacking, and capturing bases with their existing units. When only one player's bases and units remain, that player wins. If this campaign succeeds Zetawar will also have a programmable AI interface and support for custom maps, units, terrain, and rules.

Brief factual descriptions aren’t that compelling though, so please...

PLAY THE PROTOTYPE NOW!

Motivation

Earlier this year I decided to play a round of Weewar (an online turn based strategy game) with my wife. I hadn't played it in a while, but I enjoyed it in the past and wanted to play something turn based since our schedules didn't allow much time for gaming together. Sadly, I discovered EA had shut it down. I also found a similar game, Elite Command, that had been discontinued as well. While I don't think it's reasonable to expect EA or the author of Elite Command to keep these games running indefinitely for what is no doubt a relatively small group of people, it does seem like a shame that the fans of these games couldn't somehow keep them running themselves.

Thus the idea for Zetawar was born. Zetawar attempts to solve this problem by being open source and simple to host. If the need ever arises, it will be easy for the player community to take over and keep it running. Also, as a side effect of this, it will be easy for anyone to run their own copy of Zetawar.

Goals

It's almost impossible to write a game without trying to add your own favorite features, so Zetawar has a few goals beyond just being an open source, simple to host, Weewar-like game.

Customization — Unit stats, terrain effects, tilesets, and some game rules in Zetawar will be modifiable by players. This will enable everyone to help improve Zetawar and should keep the game interesting for a long time.

Programmable AI — Programming game playing AIs is a lot of fun and a great way to learn. Zetawar will allow you to completely replace its built-in AI with your own, written in either ClojureScript or Javascript.

ClojureScript — Zetawar is written in ClojureScript because it provides the best combination of enjoyment and productivity of any programming language I've used. By making Zetawar open source, I hope to encourage more people to try ClojureScript and provide a useful example code base to the ClojureScript community.

Planned Features

Gameplay

  • Rules based on Weewar and Elite Command
  • Units — infantry, grenadier, mortar, ranger, humvee, tank
  • Multiplayer — up to 4 players; hot seat (local) and play by email/chat using URL sharing

Customization

  • Custom maps
  • Custom single player scenarios
  • Fully customizable rules, unit and terrain stats, and tileset
  • Programmable AI

Technology

  • App server free design (simple to host)
  • Completely open source ClojureScript code base
  • Reference AI implementations in Javascript and ClojureScript
  • Game logic decoupled from user interface (implement your own interface!)
  • Source code documentation and test suite

Why You Should Care

Hopefully you want to play the game, but depending on your interests here are few more reasons you might want to consider supporting the project:

Gamers

  • You get an online strategy game you can invest time and energy in without fear of it being shut down or disappearing.
  • In-depth customizability means Zetawar should stay fresh and interesting for a long time.

Game Developers

  • The ability to change tilesets, unit and terrain stats, and rules means you can use Zetawar to prototype similar strategy games without writing any code!
  • Interested in programming your own browser game in a functional language? The Zetawar code base can be a source of inspiration and ideas!

Clojurists

  • Exploring the code base is a great way to learn more about ClojureScript, Reagent, DataScript, and Posh.
  • The programmable AI interface can form the basis for meetup hack sessions and training curriculum projects.
  • The separation between application and game logic allows you to write your own UI. Don't like Reagent? Want to learn Om.next, Rum, or React Native? Write your own Zetawar interface!

Educators

  • The programmable AI interface can be used for class assignments and programming contests.
  • Unlike many online AI contest platforms, the code is 100% open source. If you find issues, you have the ability to debug and fix them yourself.
  • Zetawar is a fun game in its own right. This can help engage students who have difficulty finding less human-friendly AI competition environments interesting.

Units

Note: Terrains and units are shamelessly borrowed from Elite Command (Copyright Chris Vincent CC BY 4.0, used with permission). Rather than innovating in this area I am using a proven game design to reduce risk and help bootstrap the project. The customizability of Zetawar (discussed below) should provide more than enough room to add novelty as the game matures.

Terrains

Customization

As mentioned above, one of Zetawar's goals is customizability. This will be accomplished by providing a data format that describes game rules, unit stats, and terrain effects. When starting a new game, players will be able to provide a file specifying the rules and settings for that game. Below are the planned customization options.

Game Rules — max unit health, enable/disable ability to move through friendly units, enable/disable attack bonuses (flanking, etc.)

Units — name, description, cost to build unit, movement points, ability to capture, attack range, armor type, armor amount, image, terrain movement costs, terrain attack and defense bonuses, attack strength

Terrain - name, image, unit movement costs, unit attack and defense bonuses

Note: Terrain bonuses are included as part of the unit definition. They are listed twice above (under units and terrain) to emphasize that all aspects of the terrain can be customized.

Programmable AI

Zetawar will provide support for replacing the built-in AI with AI written in either ClojureScript or Javascript. Any combination of AI and human controlled factions will be possible. In the browser, AIs will run in web workers. A browserless option for running AIs will also be provided. How this will be implemented is still undecided, but a network interface to a Node.js process seems like the most likely option. The AI API is also still under development, but due to the need to run in a web worker and (probably) over a network, the interface will be message based. Zetawar will send messages telling each AI when it is its turn to act. AIs will then be able to request the current game state and send commands to execute (move, attack, capture, etc.). Zetawar will send messages in response to commands indicating which request it is replying to and the result of the command.

Architecture

For those interested in the code, it's worth explaining a bit about its structure. Zetawar is written in ClojureScript and roughly follows the re-frame pattern. The UI is rendered by Reagent and is mostly[1] a pure function of the application state stored in a DataScript DB. The Posh library is used to link Reagent to DataScript and is responsible for rerunning queries when relevant data has changed. State transitions are handled by callback functions that execute transactions against the DataScript DB. The event handlers are a slight deviation from the re-frame pattern. They are not pure functions and they are called directly rather than dispatched through a central dispatcher. Their impurity is necessary because Posh functions as a listener on the DataScript DB and therefore needs updates to happen via calls to transact. The lack of central dispatching is mostly a matter of expedience (i.e. technical debt) and will likely change in the future.

[1]: I use component local state occasionally.

Why Kickstarter?

I’ve made great progress on the prototype, but there’s still a lot to do. In order to implement the features I’ve described above I need to focus on Zetawar development for 3 to 6 months. However, I don’t have the budget to do that myself. I need your help to fund my time working on it so that Zetawar can become a full featured game!

Also, this adorable bunny will starve if you don't support the project:

Ok, that won't really happen, but he is super cute. I bet you're glad you scrolled down far enough to see him.

Stretch Goals

The features I’ve outlined above are what I consider to be the minimum requirements for Zetawar to become a healthy open source project, but there’s a lot more I’d like to do given more time. If I raise more than my initial funding goal, I will implement more features. 

$20,000 — More land units

  • Sniper, artillery, heavy tank
  • Medic (can heal other units)

$25,000 — Air units

  • Airfields
  • Mobile flak (anti air)
  • Gunship, fighter, bomber

$30,000 — Sea units

  • Seaports
  • Transport (can transport other units across water)
  • Destroyer, cruiser

$35,000 — Roads and bridges

  • Support for roads and bridges in map definitions
  • Engineer (can build roads and bridges)

Note: In order to be confident that I can deliver what I am promising, these goals are intentionally conservative.

Credits

I mentioned this in the units section, but I am repeating it here for emphasis. I want to give full credit for the basic game design to Weewar and Elite Command. In particular I want to thank Chris Vincent for releasing the source code to Elite Command. Although Elite Command does not have the easy to host design that Zetawar aspires to, it has been an invaluable reference in terms of gameplay. Reusing the graphical assets from it has also saved a huge amount of time and allowed me to make progress much more quickly than would otherwise have been possible.

Frequently Asked Questions

How will multiplayer work? — For local games, players will simply take turns on the same device. For games over the network, the game state will be encoded in a URL that can be passed to the next player at the end of each turn. Notifications will be supported so that players do not have to literally copy and paste URLs.

Isn't $15,000 kind of a small amount for the length of time you're planning on working on Zetawar? — Yes, good observation. I really want Zetawar to exist, so I'm partly self funding. Rest assured that $15,000 really is enough to allow me to focus on it for the allotted time.

I want to give you more than a dollar, but I don’t want to have my name listed anywhere. Can I do that? — Yep, definitely. You can either choose the $1 reward and enter a different amount or you can choose one of the other levels and indicate on the follow up survey that you would prefer that your name not be listed.

Why are the t-shirts so expensive? — This is essentially a one person project. Time I spend on t-shirt reward fulfillment is time I'm not spending working on Zetawar. I need to make sure it's worth it to fulfill those rewards. Consider it a perk. They're more collectible that way!

The rewards all say they'll be delivered in July, August, or September. Does that mean that's when the game will be done? — No, those dates are just for the rewards. I'm hoping to reach feature completion for the game (not including stretch goals) by sometime in October.

Risks and challenges

Since I already have a working prototype, I have high confidence in my ability to complete the project. The prototype demonstrates the design works, and open sourcing it should be a straightforward task. The primary risk is that I have underestimated the time needed to complete the remaining planned features. To mitigate this I will be releasing features as they're developed. Even if I have been overly optimistic in my estimates, Zetawar should still have many of the planned features implemented before I am forced to reduce the amount of time I dedicate to it. Also, whether or not I have estimated correctly, I intend to implement all planned features. However, if I am forced to reduce the time I spend on Zetawar due to inaccurate estimation, it will take longer to implement those features.

Learn about accountability on Kickstarter

Questions about this project? Check out the FAQ

Support

  1. Select this reward

    Pledge US$ 1 or more About US$ 1.00

    Backer updates and gratitude

    Don't have much cash to spare, but still want to show your support? This one is for you. You will get access to the game (everyone does!) and receive exclusive backer updates and, of course, my gratitude for your support.

    Less
    Estimated delivery
    7 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  2. Select this reward

    Pledge US$ 5 or more About US$ 5

    Virtual immortality

    Your name will live forever (well, maybe not quite) in a backer list in the Zetawar source code.

    You will also receive game access, exclusive updates, and gratitude.

    Less
    Estimated delivery
    19 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  3. Select this reward

    Pledge US$ 15 or more About US$ 15

    Virtual fame

    Show up those virtual immortals ($5 reward) with your virtual fame! Your name will be listed as a backer on the Zetwar site.

    You will also receive game access, exclusive updates, and gratitude.

    Less
    Estimated delivery
    29 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  4. Select this reward

    Pledge US$ 30 or more About US$ 30

    Development build access

    In addition to regular production releases you will have access to more frequently released (and occasionally broken) development builds.

    You will also receive game access, exclusive updates, gratitude, and your name in the site backer list.

    Less
    Estimated delivery
    13 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  5. Select this reward

    Pledge US$ 50 or more About US$ 50

    Early code access

    When the Kickstarter campaign concludes, the Zetawar source code will undergo a period of cleanup (probably < 1 month) before public release. With this reward you will get immediate pre-cleanup access to the source code.

    You will also receive game access, exclusive updates, gratitude, your name in the site backer list, and dev build access.

    Less
    Estimated delivery
    17 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  6. Select this reward

    Pledge $100 or more About $100

    Zetawar t-shirt

    Get your own exclusive Zetawar t-shirt. The design isn't finalized yet, but I have an excellent designer working on it. Designs will be posted as soon as they're available.

    You will also receive game access, exclusive updates, gratitude, your name in the site backer list, dev build access, and early code access.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    13 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  7. Select this reward

    Pledge US$ 300 or more About US$ 300

    Sponsorship

    Your organization's logo (and link) will be listed at the top of the backers page.

    You will also receive game access, exclusive updates, gratitude, dev build access, and early code access.

    Less
    Estimated delivery
    3 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  8. Select this reward

    Pledge US$ 500 or more About US$ 500

    Meeting to discuss project direction

    Video chat with me for up to two hours to discuss project direction. This is intended primarily for those interested in using Zetawar for educational purposes, but all Zetawar enthusiasts are welcome.

    You will also receive game access, exclusive updates, gratitude, your name in the site backer list, dev build access, and early code access.

    Less
    Estimated delivery
    Limited 1 backer
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  9. Select this reward

    Pledge US$ 1,500 or more About US$ 1,500

    Front page sponsorship

    Your organization's logo (and link) will be displayed as a sponsor on the Zetawar front page for one year and at the top of the backers page after that.

    You will also receive game access, exclusive updates, gratitude, your name in the site backer list, dev build access, and early code access.

    Less
    Estimated delivery
    Limited 1 backer
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.

Funding period

- (30 days)