Atma has been in production for a little over two years. No, that's not going to be the official shipping title. I have a tendency of naming my personal projects after Diablo 2 characters. RIP to projects Flavie, Alkor, Anya, Fara, and Charsi. There is a lot here and I'll be following up on these different aspects of the game in the near future to give you some more in depth insight into where my head is at, where I want to take these systems, what playtests have shown me about them, and the technical details behind them as soon as I can. But here's a quick overview of where we are at today. For those who like labels, I consider this Early Alpha.

All art you see here is simply proof of concept and is almost certainly going to change before any public release.

The Vision

Atma has wanted to be a town builder from day one. I love games where I can build a house and even more so when I have a group of friends putting together a village around me. Inevitably, though, people start dropping off as they lose interest in whatever game it is. I'm sure many of us have had that experience of spending a week on a huge project only to be the last one active on the server. No one is there to appreciate it anymore.

My proposal: a living world that pulls active players and their creations toward the center while pushing inactive players toward the edge.

In its simplest form, we let players build their own creations in either an independent or a shared town. Every so often, we trigger the Shuffle which moves everyone's towns around. Your neighbor last week isn't your neighbor this week. Maybe we placed you next to your closest ally. Maybe I placed you next to your current rival. Maybe you won the weekly Guild Versus Guild battle so I rewarded you by placing you next to a high level raid, or maybe your guild had the most fishing experience this week so I placed you next to high level fishing spots. There's a ton of directions to explore here and this concept is the foundation of what is pushing Atma forward.

Gameplay Today

Today when you start Atma you'll find yourself placed on your own personal island.

A fresh character standing in their spawn location on a small island. A dock visible below them, some trees above them.
My test character in their spawn location.

Your personal island is where you can start learning the game and is the one place you will always have available to you. I want to drive social experiences as much as possible so I have a lot of interest in pushing guild islands heavily on players. But people leave guilds. So the personal island is somewhere you have that is always yours and no one can take that from you. It's small enough to be easy to explore while also encouraging you to get on the high seas to find more content.

Building

Atma has a simple building system implemented. The system focused on reducing the friction of lining things up perfectly while trying to provide a slight retro feel to the world. It works by being mostly tile-based. Most of the things you build cannot share the same tile, with some exceptions to allow for things like tables to stand on top of floors or for walls to exist between two tiles instead of occupying them. Right now players can build with simple wooden structures and some stone structures.

Everything you can place in the world is considered a Placement. Most placements are created through Blueprints which are simply construction recipes. But you can also place certain items like wall torches from your inventory. Some placements are considered "attachments" that need to be placed on the proper slot for that item type.

The player hovers to place a new wall which shows the preview in blue. A house in progress stands with a few walls, floor pieces, a table, and a book shelf.
A player lining up a new wall to place.
The player previews a wall torch, an attachment type item, being placed onto a wall with the proper slot
The player previews a wall torch being placed onto a wall fixture slot

The High Seas

Today Atma is composed of a set of seas that meet each other at their edges. You can travel to the high seas once you have your first boat and sail around to the other islands. Player islands are connected by trade routes of attackable ships. Pirate islands exist and have trade routes as well, but no meaningful content on them yet. Defeating a ship drops loot which is usually some simple resources and rarely a valuable trinket that sells for a fair amount of coins. Sailing around the high seas you may find a message in a bottle, drifters, and wreckages for some quick loot and coins. You can also chart islands which adds them to your map.

The player sails away from their island. A few trade ships follow their routes nearby and the player hovers over a Tier 3 Merchant Ship.
A player hovering over a Tier 3 Merchant Ship on a trade route

Combat

A land combat system exists today. However, it simply wasn't providing much meaningful gameplay during playtests. My focus has entirely shifted toward naval combat for the time being which I think is a much stronger hook for the game. We are still in the early stages of balancing but ships fight back and chase you down. You need to craft canons and canonballs to be able to fire at ships, and can optionally craft hull armor to provide you some additional defenses. Combat is a major focus of development right now with its first playtest coming up this Friday. I'll definitely be doing a follow up to do a deeper dive into what challenges I'm currently facing with combat and what the playtest has taught me about its current state when we get there.

Other systems

A few other systems exist in Atma.

  • A guild system allows you to group with your friends and you can teleport to the guild island to build together.
  • A bug reporter system helps playtesters report issues quickly and includes diagnostics.
  • Crafting is recipe based and works through a few stations like the crafting table, anvil, and smelter.
  • Battleships, merchant ships, and explorer ships all exist as different types the player can choose to build.
  • A trade good system allows you to purchase an item for cheap at one island and sell it for profit based on your travel distance.
  • A contract system lets you accept mini-quests with coin rewards for defeating enough enemy ships, selling trade goods, or charting islands.
  • Players have skill levels that gain experience as they perform actions and certain recipes are locked behind level requirements.

All of these things are in their early stages. They work, but they haven't been folded into meaningful gameplay yet.

Art

Most of the art you see in the screenshots on this post is a rough proof of concept. I've been trying a few different methods. I'm not an artist myself by any means. While I like to dip my feet into 3D modeling, texturing, animation, and VFX, it simply has taken too much time away from the game. So I've experimented and largely resorted to other methods. The main method has been recruiting the help of a close friend John Khaw (check out his ArtStation here). John is an incredible hard surface modeler whom I've worked with on a number of previous game jams and college projects. Unfortunately the technical and design parts of the project have not been able to keep up with how fast John can finish art tasks, so we haven't been able to keep John on the project full time.

A stone, concrete, and wood house built by a player using assets created by John.
A house created during a playtest using mostly assets created by John

To reduce art scope, I've wound up leaning heavily on procedural art methods.

Almost all of the UI in Atma is currently done with material math (based on ideas demonstrated by the Unreal Material Lab) for performance and simplicity reasons. I tried purchasing some packs on the fab marketplace but it became considerably limiting when I needed an element those packs didn't contain. I don't have the skillset to create new assets in their style. I feel the procedural UI looks a little bit flat but it did come out better than I originally expected. It's still on the chopping block with plans to replace it by bespoke art when I can.

Terrain is also being done procedurally. The materials were created in substance painter but the terrain itself is a dynamic mesh created based on my tile data. Originally I tried a method where I hand modeled each different corner shape and ledge but this proved extremely challenging to both look good and avoid holes where tiles meet. It turns out there are something like 680 or so tile shapes I would have needed to author to handle this naively (I didn't realize that at the time). So now it's generated at runtime as a procedural mesh, divided up into sections to allow for streaming.

I also tried some procedural methods for creating ships. I created a small system on top of Unreal's mesh scripting to help me keep style consistent and explored the idea of "art as code". Ships and a number of other structures exist as a script that says what shape to place where, how to cut holes, where to attach pieces, what material things are, how to bevel, and a number of other modeling operations. Honestly though, I strongly prefer the hand modeled stuff. So the plan right now is to continue using this method, which I call ForgeScript, for proof of concept assets but have them all recreated by artists when the asset list has settled a bit more.

AI and Art

A big topic these days is AI and it's definitely a delicate subject to cover. I believe in being fully transparent about how I use AI and my plans for it going forward.

In the early days of Atma I hand wrote everything but as time went on it seemed increasingly unlikely that the project would ever see the light of day if I didn't leverage AI. So I use AI a ton for coding. I still refuse to use AI for generated art assets, but I did have it create the ForgeScript system and my UI material code. You could argue this is a weak workaround and I would agree. But I'm a tech guy at heart and sometimes I need to explore these ideas to sate my own curiosity. Again, the goal is to just use these workarounds for the early days of Atma where I need to create prototypes quickly. I have some funds set aside to hire artists to recreate these assets before an actual launch of the game and hopefully before I even get to a public beta.

Backend

Before starting this project I didn't have a lot of backend experience. I'm still absolutely in the learning stages but I have poured a significant chunk of these last couple years into learning the AWS (Amazon Web Services) ecosystem and some backend best practices. A lot of people say vender lock-in can be a bad idea, but I needed to focus on reducing scope as much as possible. Using AWS gave me access to a large number of existing tools while not having to manage multiple accounts or coordinate services between different vendors. Everything in AWS plays nicely with everything else in AWS. It might not be the absolute cheapest route, but it keeps things simple and helps me develop a set of skills that should be relevant for years to come.

Is it an MMORPG yet? Not quite. A lot of the framework has been set up and the proof of concept has been tested with automated swarms of bots, but it would be a bit naive to assume I've hit the real challenges with MMO scaling at this stage. I really need to get a large group of playtesters playing the same servers for at least a week before I can say its an MMORPG with any level of confidence. Even then I'm assuming there are mountains of unknown unknowns yet to come.

Right now players can log in to the game using Steam authentication. The vast majority of my backend "control plane" exists through lambdas. Clients communicate with the backend strictly through a client WebSocket API, and servers leverage a mixture of a WebSocket API (which is being phased out slowly), lambdas, and direct DynamoDB access. Flows that currently exist and have been play tested include login, character creation, world joining, server travels, and save data. Last weekend I added some analytics using AWS Athena and S3 which have been locally tested, but I think will be really fun to check out after the next group playtest.

A temporary analytics dashboard showing player count, items purchased, new player events, and some other stats.
A proof of concept analytics dashboard with some test data.

As with all these sections, the backend infrastructure and process deserves its own set of posts, so I'll show some restraint and stop here.

Playtests

Atma has gone through a handful of playtests so far. I've done a few group playtests as well as some individual playtests. Almost all of these have focused on the building and crafting systems. This Friday I will be having my first playtest that I hope gets to experience naval combat. Behind the scenes I've been slowly gearing up Atma for longer duration playtests. I really want to be in a spot where I can just leave the servers running for a week and let people jump in and out as they please. As it is right now, the playtests have simply been one or two hour focus sessions.

How are playtests going? Fine I would say. I definitely find a lot more bugs than I would like, but overall I'm getting the heart of the systems to come through. And in group playtests, people often continue playing a little past when I officially call time. So it's been reassuring that something enticing is here. It's important to remember there's a significant bias though: all the people playtesting are friends of mine who are invested in my journey as much as they are in the game. They'll always be a little more excited just because its something I made. It's still a great way for me to find serious problems and bugs before I start getting unfamiliar playtesters involved, but it certainly isn't an accurate representation of how the average player will experience the game.

What am I working on now?

Right now I'm working on the High Seas combat and overall balance. I'm experimenting with trade route behaviors, ship strengths, island positions, and distribution of island types. I've created some tutorials that help teach the game but have also encountered a few bugs that can lock you out of completing them effectively. I'm also entertaining early ideas around the economy of the game, and finding ways to make sure early level players can just play and not have to stress about resource scarcity or trading until higher levels. Again, the first playtest for this stuff is Friday and I'm really excited to see how this all looks through the eyes of a player.

I think that's a decent overview of where things stand today. I caught myself deep diving into a number of these topics as I was writing them and had to take chunks out and set them aside for future posts simply because of how long it has taken me to get this all down on paper. It's been a great way to do a little review for myself and I hope it sheds some light on the current state of the project.