Here is a collection on concepts that I am leaning towards for My Colony 2 as of today (20200624). This is all subject to change and I can be convinced by the community of anything, so keep the suggestions and feedback coming. This is going to be a super long post featuring all of my thoughts on MC2 thus far. Feel free to criticize anything and everything here. My feelings will not be hurt and nothing is set in stone. This is a starting point for community discussion to help make MC2 the best game it can be!
Relationship to My Colony 1
MC2 is an entire new game, not an upgrade to the original, or a version 2.0. It may use completely different concepts. It will not be tied in to the same server. Game files will not transfer over, as MC2 will probably have completely different buildings/tech tree, etc.
This does not mean that MC1 will be going away. I will continue to support the original and the server indefinitely. I realize that a lot of people like the style of game that MC1 is and do not want anything to change, so the original is staying where it is. It may continue to receive new content as well as bug fixes, but I do not plan on any further changes to the gameplay mechanics or core engine going forward.
That said, as long as MC1 remains popular and people keep playing it and paying for it, I will keep the game going.
Business Model/Monetizing
This is the least fun part of development, but a necessary one in order to make creating a game feasible. The business model for MC1 was tacked on as an afterthought, and reflecting back I do not like the concept of certain structures and units being premium.
None of this is set in stone, but here are my initial thoughts on the business model. My Colony 2 will be a straight paid app on all app stores, with everything unlocked at the base price, no in-app purchases. No advertising anywhere. The exception is on Ape Web Apps and the Ape Market, where it will be free, everything unlocked, but with no access to multiplayer or custom content. Maybe only one map type available.
Current My Colony 1 is basically already like this on Desktop, with the mobile client being free with additional IAP, so this change just makes the mobile version match up with what is already on desktop.
Now, I do anticipate the dissatisfaction of Android players not having the free version in the Play Store. However, Android support for Progressive Web Apps is sufficiently advanced now that you can just install the Web version to your homescreen like an app and it's hardly any different. Same with iOS. And MC1 will still be available for free like it always has been.
No free version on the mobile app stores will likely mean less players, and I understand this. But I like the idea of just buying a game and having the whole thing, not worrying about IAP's and not having any advertising.
Client/Server Structure
The biggest change to MC2 is it's design from the ground up as a multiplayer game. This does not mean that you cannot play single player, but it is being designed specifically for multiplayer.
MC1 has limited multiplayer, which basically consists of chat and trading/gifting resources. You can play together on a multiplayer region, but all you are really doing is sharing atmosphere and seeing thumbnails of other players' colonies. Not really very multiplayery (is that a word?). The MC1 multiplayer is also global and centralized, meaning everything has to go through the global My Colony server.
My Colony 2 multiplayer will be decentralized, meaning no global server that everybody plays on. Why am I doing this, because it seems like a downgrade? Look at every game out there with real global multiplayer, not just chat and trading. That takes massive infrastructure, and you pay for it with either a monthly subscription or endless IAP's. That's the only way it's really possible, and I don't think anybody wants that if you really stop and think it through.
The only realistic way to add real multiplayer to the game without investing in a massive infrastructure and charging big money for the game is to decentralize it. And since I am not Blizzard and do not want to spend my whole life maintaining MC2 servers, I am adopting a decentralized approach.
What does this mean? My Colony 2 will actually be designed as two separate applications in one, the client and the server.
The game client will be fairly light weight. It's job is to receive data from the server application and render it to the screen, and pass instructions as to what the player wants to do onto the server. That's pretty much it, and it should be fairly performant. Even though the game is moving to 3d, I still expect it to perform better than MC1, simply because 3d hardware rendering performs better than 2d software rendering.
The game server is much more interesting and is where all of the game mechanics take place, but since the server does not have to worry about handling the UI or making drawing calls, it actually has a bit more overhead to work with than on MC1. The two most expensive operations in MC1 are the rendering and the pathfinding. In MC2, the server is eliminating the rendering, and I also want to greatly reduce the pathfinding, leaving more headroom for actual fun stuff, like game mechanics simulation.
So in MC2, the game relationship is between client(s) and server. Whenever you create a new game in MC2, you are creating a new server, and then connecting to it with a client. The server is saved and retained between plays, where the client only exists while it is in use, and is not saved. So the point I just want to get across is that the client is really not that important, the server is.
The server and client code are both included in the My Colony 2 game. You will have the option of starting a regular game or creating a dedicated server. When you start a regular game, you are spinning up both a client and server and creating a 1-1 connection between the two right on your device. You can also make your game joinable by friends or others on your local network for multiplayer.
You can also create a dedicated server. When you create a MC2 dedicated server, you will be presented with a special server GUI that allows you to be in full control of the game. The server will continue to process game data as long as it is running, even if no players/clients are connected. A dedicated server will be able to establish custom game rules and parameters, and have mods installed that will be transferred to any client who connects. You will be able to make a dedicated server open to the public, or by invite only, or by specifying a list of accounts who are able to join. It's up to the server. A dedicated server will be able to moderate it's players however they want, the server can adjust resource levels, ban players for cheating, or anything. It's all up to the server owner.
The game data is saved only on the server, and the server owner will be responsible for making backups. I expect game files to be a lot bigger than MC1, so I am not going to be implementing Cloud Sync, which is known to cause corruption on larger files anyway. The ability to export and backup data will be built right into the game as usual.
Because of the way it's designed, even if you only want to play single player, it still may be desirable to set up a private dedicated server. For instance, you could run a private MC2 dedicated server on your powerful home PC that is always on/connected to the internet. Then you can connect to your server from your tablet/phone/laptop/another window on your computer, wherever you are, and your game is always there waiting for you, and all of the processing is being done on the more powerful computer.
The Game World/Game Files
In MC1, the game world is divided into cities and regions, and each city is a separate game file. In MC2, there are no cities and regions, there are planets.
This is something I am aping from Minecraft. A planet is like a regular city file in MC1, except is extends out in every direction to infinity, so you do not have to worry about running out of space for your city. A planet can have multiple cities and multiple players building cities at the same time.
Planets will be procedurally generated, and new areas will be generated in real-time as needed. Each planet type will have different biomes like in Minecraft, so that different environments and different resources are available in different parts on the planet.
This system means that you will have to build up trade networks with other cities or make additional settlement outposts across the planet in order to bring more resource types back to your colony. In MC1, practically every resource in the game is available with a square mile of your lander. This doesn't really make sense. In MC2 you will have to go out and find resources, and then build up a network for bringing them back into your city.
Technically, the MC2 world is still a big 2d grid like in MC1, but each tile does have an elevation, a z-index, for varied terrain elevations. Different resources might be found at different elevations and in different biomes. You will also be able to adjust the terrain in-game, like building up dirt to level out construction areas. There will be flat areas good for building, low canyons, and hilly or mountainous areas.
Also like in Minecraft, the terrain is generated on the fly and only transferred to the client in "chunks" as needed. So your client will only contain the data for the area that you are currently looking at, and the immediate surrounding areas. As you scroll around the map, areas you are no longer looking at will be disposed from memory as new areas are loaded from the server.
Construction / Resource Gathering and Rovers
I would really like to get rid of Rovers completely and simulate everything. It's not that I hate rovers, they are so helpful and adorable. The issue is with the pathfinding. Just driving rovers around the map takes up a huge percentage of the MC1 processing time, for what is essentially a visual effect.
Pathfinding is both CPU and memory intensive on anything larger than a medium sized MC1 map, and in MC2 the map sizes are being expanded infinitely larger. It's not just as simple as "only path finding around a certain area from the rover." Before you can even calculate pathfinding operations, you first have to generate a pathfinding map and load it into memory. The maps will be more expensive than in MC1 owing to the introduction of terrain elevation, as there will now be cliffs to work around. Each time a new structure is placed the pathfinding map needs to be recalculated. With the game being multiplayer, this will have to be taking place on a larger scale. It is one of the features holding MC1 back, due to all of the CPU time that must be dedicated to solving rover paths.
The issue of course, is that everybody likes rovers. Even I like rovers. Would the game be less fun without them? I don't know. If you could just turn off Rover Rendering in the engine settings and you didn't even see them, but everything continued to operate as normal, would it make a difference to the game, or would it matter? Maybe it would, maybe it wouldn't.
Everything a Rover does can be simulated for a fraction of the CPU and memory cost.
This is the largest part of MC2 that I don't have an answer to. I can't just remove rovers because that would be a blow to the fans of MC1. I also cringe thinking of all of the months wasted on optimizing path finding and the 1 star complaints about performance, all relating to a path finding feature in what is essentially a city building game.
There are options.
I could always just keep rovers in the game as they are and just keep working around the processing issues that come with it. In a single player game or a server with only a few active players at once, it probably wouldn't be a very big hit.
I have also considered just simulating rovers, sort of like colonists are just simulated in MC1. For example, you don't even have to build your own rovers. But when you place a new construction order, little rovers drive up onto the construction site and build your building anyway. These rovers do not exist on the server, but you see them building on the client. Same way for moving resources around. On the server it is just simulated, but on the client, you see a rover driving around doing all of the work. This would still require path finding, but each client would be doing their own path finding on the visual rover effect, and the player could turn it off if it became a performance issue.
If the client could just visually simulate things like rovers, colonists, police cars, busses, etc, they would all still be there visually making your city look alive, but the server wouldn't even have to worry about them.
Maybe there are other options too that I am not thinking of? All feedback on Rovers is welcome. I want the game to be performant, but I also don't want to go against the fans, so please let me know what you think either way.
Graphics
MC1 is a software rendered game using the HTML5 canvas element, arranging .png and .svg tile images onto a 2d isometric grid. Most of the graphics processing is done by the main CPU and not the graphics card, so graphics performance is largely defined by how good your processor is. This is why the game runs a lot better on desktop vs mobile, or even on iPhone vs android, and iPhone processors tend to be a bit better.
The problems is that the CPU also has to process the game, so trying to do everything at once gets expensive, especially on mobile devices.
My Colony 2 is moving to WebGL for graphics processing, which is a javascript based implementation of OpenGL that handles rendering on the GPU. This should lead to far better performance on most devices.
My original idea was to use Blender for all of the games building models. The graphics were going to be awesome. But when I dug into Blender and started working with it, I remembered how I am not actually a graphics designer, and it was going to take me forever to make all of the models for this game.
My other idea was to make blocky pixelated type graphics using my own Voxel Paint application (
https://www.apewebapps.com/voxel-paint/). This means lower quality visuals but much higher output and probably better rendering performance as well. It's also so easy to use that anybody could make their own MC2 models, my wife even offering to help design structures for the game (she is a big Minecraft fan).
At the end of the day, My Colony 1 was never known for high quality graphics, but I thought that with MC2 I could really make it look great. After putzing around with Blender though, I have to acknowledge my own personal limitations. Basically, I can either spend months learning how to make great 3d models in Blender, or I can spend months working on the game code. I know which one I'd rather do. So I am probably going to go with the pixelated look, simply because it is something that I can actually do myself within a realistic timeframe, and it will also go well with the next point I'm about to explain, which is modding.
I know some people will not like a pixelated looking game. This is one of those areas where I have to say "tough," unless somebody is willing so supply me with hundreds of 3d models free of charge, which is what it is going to take in order to do this properly.
Modding
Customization is going to be huge in MC2 compared to the original. Given the global online multiplayer in MC1, custom content could not realistically be allowed in the game. The decentralized nature of MC2 changes everything though, and modding and customization, as well as all of the tools needed to make it happen, are going to be baked right into the client.
In MC2, the basic "unit" of the game is the
building. Everything is going to be pretty much based on buildings, and their relationship to each other. This is basically how MC1 works as well, so this is nothing new. What is going to be knew is My Colony 2's build in Building Editor.
I am going to be creating MC2 using the games' bulit-in editor, and so the same editor I use to make the game is going to be available to all players.
Each building in the game is going to be stored as a building file, and the base game will ship with all of its standard building files, which will be loaded at runtime. This differs from MC1 where all building data is stored in a single JSON file that is shipped with the game, which cannot be easily edited.
A building file will contain three parts.
The first is the JSON formatted definition data, with information about the name of the building, what it does, what it generates, etc. All of the properties that a building can have will be stored in that data.
The second part is the model information, which will essentially be an embedded Voxel Paint file.
The third part is a small (maybe like 64x64 pixel) thumbnail or icon representing the building, which will show up on the construction sidebar and various places throughout the UI.
The three above parts are all packaged into a single file which can be added to the game client, posted online for easy sharing, or what have you. A dedicated server can include custom building files that will automatically be distributed to clients when they join the game. Each building file will have a unique UUID and version information, so if a client already has the same version of a building file that a server does, it will not need to re-transfer the data upon connection.
This system is actually a very powerful change over the original My Colony, and unlocks essentially limitless possibilities for the game. This also makes it a lot easier for the community to participate in development of the game. A creator who makes a great building idea can distribute it online where it is tested out and balanced by the community. If it works in practice and everyone likes it, the file can be included in the base game.
If you want to host a crazy dedicated server with a bunch of custom buildings that totally change the game, you can do so.
I have no idea what kind of buildings people will dream up, but including the content creation tools right into the base game will be huge, I hope. And I plan on making the process as easy as I possibly can, so that anybody can create a building. Using Voxel Paint, if you have an idea and the ability to build a house in Minecraft, you should be able to make it a reality. And being able to make something and then instantly import it into your game makes it simple to test out concepts and balance them right there on your own device.
It's possibly that nobody will care about modding or making buildings, but it still doesn't hurt to add the tools right into the game. If nothing else, it will still make it easier for me to create new content for updates, versus having to go through and edit JSON data manually.
However, it's also possible that everybody will be making custom content and the game takes off in crazy directions that we never even imagined!
It could even be possible to allow mod creators to somehow sell their mods in-game and get paid in real money, maybe through PayPal or something. That is a thought for another day though, and not a current actual plan.
Conclusion
These are my current thoughts on MC2 as of this day. Like I said, nothing is set in stone yet and everything is subject to change. I wanted to put everything out there so that the community knows what page I am on and where I am headed, and has time to stop me if I am about to drive over a cliff.
Remember that I am open to all feedback, so if you have ideas, please don't just be quite about it, or don't just complain about them in a Discord chat somewhere, because I probably will not see them. Part of being a game developer is getting hate e-mail on a regular basis on why my games suck, so believe me that your being critical of the above ideas will not hurt my feelings, and will be nothing new to me.
The whole purpose of doing all of this beforehand is to get real feedback from the community so that MC2 can go in a direction that we all like and we will all have fun playing. Once I start getting into the code, it gets harder and harder to make changes, so if there is something you don't like, now is the time to mention it. Think of all of the things I could not effectively implement in MC1 because they would require massive time-consuming changes to the entire engine. So getting ideas in right now is how we avoid that.
Like MC1, I'm trying to make something fun that I myself want to play, not a game that is going to just nickel and dime players with constant ads and IAPs so I can sit on a yacht somewhere. I think the new decentralized play model will allow the game to outlast the original. Basically, if I get in a wreck and die, the MC1 server will be forever down within a few weeks. With MC2, once players can make their own servers and create their own content right from within the game, what happens to me becomes more irrelevant, which is the way it should be.
Anyway, if you got this far, then thanks for reading my small novel. Please give some thoughts to where you want to see the game go, or discuss it with other players and really think about all of the concepts I laid out here. I want to start working on the game soon, maybe as early as mid-next month. I plan to start with the world-generating engine and the in-game building creation tools first, so people can start testing that out and seeing what it is like to make their own content.
So between now and then, if any of the above ideas are way off the mark, I need to know now. So think about it, let me know, and thanks for helping me create the follow-up to My Colony. I think it's going to be fun!