Welcome to the edge of the earth. (Art by Dayton)
For the last year we’ve been working on a new game! It’s called Flatlanders, and it’s being developed by Dayton McKay (@FarfinFarfin) and myself. I’m programming, he’s doing the art, and we’re both designing the game. We’re building it in Monogame with my patented “ElfEngine” (it’s not patented) which is a total rework of the Duck Game engine. It’s also designed in the same spirit of sorta dumb fun as Duck Game but Flatlanders is a completely different beast- it’s a turn based strategy game in the vein of games like Advance Wars or Civilization, mixed with a deck building card game. The gameplay is simple and completely based around placing cards and moving them around a map. Each player picks 40 cards and pairs together a Castle and a Sovereign that each have special abilities which affect the entire match. Your base area expands as you place cards around your castle, and the game ends when only one castle remains.
General mood in the Corptron offices.
Gameplay consists entirely of placing cards and moving them around.
Some units move and attack differently, and setting up combos is important for getting the most out of your deck.
Promotions are a limited resource that lets you boost a card and move it again.
Sneaky units cannot be seen by your opponent until they’re revealed, and will stun the opponent’s card if they attack while hidden.
Traits allow cards to share certain behaviors. The Sea Lion for example is a “Swimming Psycho Beast”- Swimming means they can move through water without slowing down, Psycho means they can attack friendly cards, and Beast means that they don’t require a citizen to build.
A typical deck.
I won’t be going super deep into gameplay stuff right now but hopefully you can get a pretty good idea of how it works from these screens and gifs. We’re serious about balance but are taking a “Red Alert 2” approach to it where fun is a bit more more important than making sure every card is equal. Like Duck Game, this is the kind of game that you’re supposed to play with your friends and attacking your opponents in funny ways is more important than crushing them efficiently. We’re trying to make sure no cards are totally broken but if a card is a little bit bullshit but it’s fun to use we usually leave it in and if your friends don’t like it they can say “no bringing Crazy Legs, he’s for cheaters!”.
In addition to being designed for silly nonsense, Flatlanders is being made with a very strong focus on modding and we’re trying to make it easy as possible. All the cards in the game are built using the modding APIs so modders will be using the same code as we are. Every action in the game triggers events you can hook onto to make things happen, and you can even hook to events globally to say things like “whenever any unit card runs ‘effect.death’ destroy any cards adjacent to them aswell” or “whenever any card spends Blood give it +1 ATK”. Making your own card is pretty straightforward:
Voilà!
It’s going to have AI and a proper single player mode too! There are AI opponents to play against and we’re planning to do a full single player story mode where you walk around a map and duel teenagers and firemen and the like. Flatlanders can be played with 1 to 4 players in either local hot seat multiplayer or online (modders rejoice, all AI and online code in this game is absolutely automatic so you don’t have to write any).
Your quest to be the best.
So, who are you to resist it?? Flatlanders is coming!! We don’t have a release date or platforms totally figured out yet- dev is well underway but we want to take our time and make sure that we get everything in, that the base card set is solid and the UI flow is cool and good so right now we’re aiming to have it done by early next year. I’ll keep you up to date and will definitely be writing more posts about the game that get more into the mechanics and development aspects of it. Thanks for reading, good things are coming!
Eyyyyyyyy looks great!!! I see how much you’ve learned from past mistakes putting a lot of focus into modding and making networking/AI automatic 😉 I personally think you nailed the modding system on DG too its just that it was missing docs (specially networking stuff). I really like that corptron is in the “design” part of the cards, im interested in what parts of the original dg engine have been reworked too but im sure whenever this is released and i look at the code ill notice every single bit of dg code heh
haha yeahhh… Have agonized over a lot of the mistakes made in Duck Game and some things have definitely improved. The nice thing about Flatlanders is that it’s all animation based and one thing happens after the other instead of having so many actions happening at once like in DG. This sort of game is so much easier to do AI and networking for since the AI doesn’t have to navigate against physics and the networking doesn’t need to sort out any simultaneous conflicts. When everything is working the game only needs to synchronize inputs and the rest is magic.
Thanks for being positive about DG’s modding system 😛 Most of the DLL loading and asset importing stuff is still based on the original code written by Jonathan Barkley (Paril) and it’s amazing code. This was back when I knew nothing of the inner workings of C#, we where talking and I mentioned some kind of modding system and he knew exactly what to do and just blasted it out. Not sure how he did it, I think he wrote all of that (DLL loading, asset pipeline, the mod management screen) over the course of like a week and it’s taken me years to even come close to it. Come to think of it, he wrote the code for the fancy physics sparks in DG too. Before him the sparks where just white pixels, one of those things that had been that way for so long I didn’t even notice it was crappy. As for the actual code writing experience for DG mods I know it’s not perfect and some pretty wild mess has to be made in order to do some simple stuff. That’s the sort of frustration we’re trying to avoid with FL. The idea is to have the code be straightforward enough that it pretty much documents itself (while also having proper documentation written in the code!) and I want to release the source code for all the game’s cards alongside the main release since the best way to learn is by example.
For FL anytime “Corptron” shows up that’s pretty much gonna mean me and Dayton. For the card designs there are a lot of times when Dayton has an idea pretty much fully formed, other times where it’s my idea and some times where we’re playing off each other and working together to come up with a bunch of new cards in a call. After that we test together constantly and usually changes get made either for balance or because we decide all the cowboys should really work with horses etc. So by the end it feels like we’re both designing the cards even if a particular card is one of our babies. As for the DG engine stuff, ElfEngine started out with me cherry picking some stuff and rewriting other stuff to work like DG but better but a lot of the code is pretty different or missing (collision stuff exists in ElfEngine but it’s not done). The build pipeline is the same but improved (and less XNA dependent) and a lot of random code that was floating around before has been brought into more meaningful places. One major difference between FL and DG is that FL uses a 2 thread system to allow the game thread to pause while the rendering thread continues in order to play animations and run code in a more linear synchronous fashion. When you’re writing the attack effect for a card, for example, you could write:
Animation.Play(new SuperJumpKick());
other.hitPoints -= 1;
With the way the animation system works, “other.hitPoints -= 1” won’t be called at all until SuperJumpKick is completely finished playing. This makes card animations super simple to write and keeps functionality obvious, no weird timing issues or animation queuing necessary. When the game thread is running, the rendering thread is paused and vice versa. The game thread has a Wait call at it’s bottom, which is called when the stack unwinds or when an animation has finished a run of it’s Update function. As soon as Wait is called, the rendering thread runs a frame, comes back and lets the game thread have another go. The best thing about this system (or I like it anyway) is that it’s not truly multithreaded so it’s easy to write and maintain code for since you don’t have to worry about two things happening at once. The only downside is that it’s very important to only update game numbers in Update calls, and to only do rendering stuff in Render calls or weird stuff will happen. That’s kind of a fundamental rule with most game engines though and it’s a fairly easy one to remember with the way FL cards are written.
Can’t wait to see what you think of the code, man! Been thinking about you every step of the way and it makes implementing console and engine stuff that much more fun to think that modders might be playing with it later.
In super short: Wow!!
Also where did the penguin game go?
Oh boy. Hiatus, haha. Was just starting to work out engine stuff with penguin game when Dayton send me his design doc for how we could work our old game into Flatlanders. Still think about penguin game all the time though and I’ll surely be coming back to it.
Very excited! One of my favorite games is card city nights 2 and this seems quite similar in some aspects.
Woah card city nights looks great! Something struck me as familiar with the art right away and it looks like it’s by the same people who made Ittle Dew which is cool, really like their artist. Will have to ask Dayton if he’s tried this one!
This looks very promising, and I’m looking forwards to playing yet another game of yours! In terms of game design and development, it seems like you have learned a lot and certainly polished your skills, which is great to see! Best hopes for this project of yours, and congratulations 🙂
I’m also excited to develop mods for this game!
(My first work as a freelancer was a Duck Game mod, so I’ve got something special with DG and I’m super excited to see more projects of yours Landon & Farfin!)
Thanks man! It’s exciting to be working on a new thing with completely different challenges than DG. Feel like I’ve learned a lot but still have so much to learn. Some stuff is a lot better- making mods is better, rendering is better, input is better. The UI code is still really awful. But it’s good to hear from you, thanks for the good times and the mods man. Can’t wait to see what you can come up with!
Very interesting and exciting. The cards seemed to have been taken out of a Slay The Spire, right?
Its nice to hear from you again. The game looks great and i like to idea im looking forward to hearing more from you guys
Looks pretty cool! Can’t wait to eventually try it out…!
I also wanted to slide in a question, have you ever considered making a sequel to Duck Game? I’d imagine there is lots of things you’d do differently a second time around.
Keep up the great work!