community_spotlight

Community spotlight: Twokinds Online by Cookie Dragon Games

9 May 2019

TwoKinds Online is an MMORPG built on SpatialOS by the indie studio Cookie Dragon Games, founded by Judah Perez and Peter Rose. We spoke to Judah to find out more.

An early screenshot of TwoKinds Online.
An early screenshot of TwoKinds Online.

How did your team start?

I always wanted to make games when I was young. I made little paper RPGs to play with my brother, but I didn't get into video game development until the end of high school. I wanted to make an MMORPG, so I kind of dived into game development the hard way. After learning from some tutorials, I jumped right to multiplayer games using Photon Server. With a bit of practice, I made a few smaller games at game jams but never gave up on the big online game I wanted to make.

Peter is the other developer working on the game – I’m a bit fuzzy about when we met up. We met on the forums of a favourite webcomic and eventually started working on a game together. When I asked him when we started, he said, "We sorta didn’t. It’s like the guy you see roaming the hallway from time to time, and talk to in the elevator, until eventually, you’re having a barbecue somewhere in Mexico, after burying your former boss who you killed in an accident. It just all sort of happened." Both of us have day jobs, so we work on the game at night and on weekends.

What did you do before this project?

I work in software development. In fact, Peter and I both have backgrounds in software engineering. That, combined with making the game, means we’re usually developing or programming for 10 hours a day, plus weekends. All my game-playing time has been replaced by game-making time.

I've made some smaller games in the past. Most other games are built during game jams, so their development scope is way smaller than TwoKinds Online. There's a little Tetris variant I made called Stacker With Physics. The blocks fall over and bounce around, causing lots of chaos. Another game I created with a group was Fish the Fish. It's a 2D game, where you try to fish as much as you can from a lake, but if you catch all the fish, the lake becomes empty.

TwoKinds Online is focused on community interactions.
TwoKinds Online is focused on community interactions.

How did the idea for your game come about?

I really love virtual worlds in MMORPGs, but I drift away really fast. I tried many, but usually, I only get to level 15, then I bail. I never got into WoW or similar games, but I like more freeform titles. My biggest inspiration is probably Mabinogi, followed by all the stories I hear about Ultima Online and Star Wars Galaxies. I wanted to make something that wasn’t just about getting from point A to point B, killing this, finding this, and so on. I wanted to make something with a large game world and different routes for players to take that may or may not involve fighting, have ways for players to create and build up towns and have a living world with dynamic NPCs.

Give us the elevator pitch for your game.

TwoKinds Online is an MMORPG based on the webcomic TwoKinds. It brings the world of the comic to life, and you can live a fantasy life. The game focuses on community interaction, item crafting through minigames, building trade networks, and exploring the world. You leave your legacy by retiring and passing your skills on to a new character.

What's unique about it?

We’re making minigames for crafting. Making a sword requires hitting the right spots on the anvil, refining metal requires timing the billows properly, and other minigames are in progress. Instead of separate housing zones, players will be able to build homes and shops right in the game world. This means the towns will be created and owned by players. We’re making a dynamic world, where fans of the comic can roleplay. Our focus is less on combat, more on the world.

Judah Perez, co-founder Cookie Dragon Games.
Judah Perez, co-founder Cookie Dragon Games.

Tell us about your team.

Peter and I are both part-time game developers. We have bills to pay, but really want to make large, ambitious games. We work in different countries and time zones, so have never met each other in person. I live in California, and Peter is up in Canada.

What's next?

Well, there's a demo out right now. We have Steam keys available on request at the download page. We don't really have a timeline, but as we complete more features, we'll be opening up the larger game world for playtests. I want to do an early access release by the end of 2020, but it’ll be done when it’s done.

What's your dream project?

This game! But with a much larger team. I always wanted to make MMORPGs. I wish I got into MUDs sooner, because I would have learned a lot of the design quickly, compared to fumbling about over the years. My dream project is a large, persistent, fantasy game, where you can explore, sail the seas, make friends, and fight in an action combat system. If I can be unrealistic, my dream would be to make the ultimate Pokémon MMO.

Why did you choose to develop on SpatialOS?

After trying my own servers built on to Photon, I eventually found and started using SpatialOS. I think I started with Photon PUN, with peer-to-peer networking. After realising it wouldn't scale to what I wanted, I looked into the Hero Engine for making an online game. This was good for a time, but I was unfamiliar with the specialised language, and the asset pipeline was not as easy to use as Unity's. I eventually started learning the server side of Photon and making my own game server to handle server-side authoritative gameplay. Eventually, I hit a wall there, too, when I was trying to make a world with multiple server regions and physics on the server side.

SpatialOS has made distributing server load easy, running physics on the server manageable, and handling data persistence simple. All of this helps when you have a very small team.

Did you start building on SpatialOS or did you port?

I started by prototyping a few features, then I ported some code from the previous iteration into SpatialOS. However, because the networking was different, very little code actually survived.

Did you use an SDK or GDK, or did you integrate your own engine?

I use Unity for the game, but I started on old SpatialOS, which required me to learn Scala. Eventually, the Unity SDK came out and made server-side coding a lot easier. I'm now using the GDK for Unity, which uses ECS for the underlying networking.

Concept art
Concept art from the webcomic.

What couldn't you have done without SpatialOS?

Quite a lot, actually. The amount of engineering going into SpatialOS outpaces anything I would be able to do alone. Leveraging that has made my ambitious game possible. The hardest part to replace would be the server load balancing. When configured, it can dynamically spread the server load around, so empty game areas aren’t wasting compute time, while denser areas with a lot of players can have multiple server workers close together. It's really cool to see the game in action. One of my favourite things to do is implement systems myself, but I hit limits for the amount of time I can spend on specific parts of the game, and using tools that someone else is focused on is a huge boost to productivity.

What are your favourite SpatialOS features?

Server load balancing and data persistence. Writing my own data replication between multiple servers was a nightmare, and SpatialOS handles it natively and well.

What has been the biggest improvement in SpatialOS for you?

Over time, the workflow for development has become easier. Previously, I had to build out the server each time I made a change, but with recent updates, I can now run the server right in Unity. This has got my iteration time down to a minute or two, compared to however long it takes for Unity or other server workers to build. Also, unlike servers I built before, the development is all in Unity, so I can debug easily, catch errors, and share a lot of code between the client and server.

What else would you be interested in building on SpatialOS?

I’d like to make a seafaring game, where I can sail around and be a pirate. I also want to make an asymmetric multiplayer game, where players can either hunt the assassin or be the assassin. SpatialOS makes dynamic virtual worlds easier than before, so there’s a lot of space to explore in it.

If you’re working on a SpatialOS game or project and are interested in it being featured on our blog, contact our community team.