Empire development project

Empire is a positively ancient game developed in the 60s apparently and pushed forwards across the years.

public domain Empire as it exists today

Classic Empire

I started playing a commercial version back in the 80s, and still play it to this day. More or less this.

A commercial version I have played for years

I would like to build a completely modern version from scratch. Using C++ / C# OOP, classes for everything, database game store, table driven odds and properties tables. Maybe using a modern hex cell map.

The game is quite addictive as it stands, I do not envision adding the modern visual trappings. This is more chess than role play.

Testing the interest in working on something like this as an open source project. Anyone out there interested in participating in a role in developing a simple (by modern standards) yet fascinating pure strategy game?

2 Likes

Here’s the thing about game development…
In your mind you have X work to do.
Now double that, and you will actually get but a fraction of what you actually have to do.

Strategy is one of the most difficult genres to program, completely opposite to the platformers. That’s why you see a billion low effort platformers on steam and not really much strategy games. It takes time, work, testing, work, work and some extra work.

Not trying to discourage you. Just want to make sure you know what your getting yourself into.

Why don’t you use one of the free game engines available? Something like Unity or even Game Maker Studio will effectively cover most of the basics for you. You can get an entire hex based systems on the asset stores, that will also do the work on the hex grid for you.

My point being have you explored all available options? Starting from scratch could be very very very painful, slow and disheartening…

1 Like

Indeed to all your points. A quick story.

I have been a developer and database analyst since the mid 80s. In 2004 I got a client who asked if I could take a 65 million record 700 field table and do “counts” for him. I was hungry and so I said YESSSS! I can do that. I had never touched SQL Server, but that was the tool I chose.

I built a “server” (in 2004) from parts from Newegg, signed up for Microsoft’s developer software package (a smokin deal BTW), installed Server 2003, installed SQL Server from the era, learned how to import fixed width data, stripping the padding and generally got the data into a SQL Server database. All from a zero knowledge start.

By 2010 I had upgraded that system to a dual core opteron with 16 cores and 90 gigs ram (from Newegg of course), Windows 2008 and SQL Server 2008 (from the developers pack) and had 450 MILLION records in 8 databases and was earning near 6 figures from that work. But it was taking me 60 hours a week to do the job.

So I went back to my community college, took a C# class (two semesters), hired the smartest kid in my class to work with me 4 hours a day at my home office, and wrote a C# program to automate SQL Server to do my work. Every month the finished program dumps 450 million name / address records to disk, runs it through Accuzip to perform CASS / NCOA updates on it, and import it back into the database. After 1.5 years of development I turned my 60 hour a week job into 10 hours a week. And kept my near 6 figure salary.

Soooo… I love programming. I really love OO programming. I need to get back into C++ / C# and get fluent again (I took a little 3 year vacation with my high paying 10 hour a week job!). I need to learn Linux. This project is just a way to do all that.

With parts from Newegg (where else?) I have built a Ryzen 2600 system with 32 gigs RAM, a gb nvme SSD, a 3tb HD using that storemi thing from AMD. Running Windows 10 Professional. I have learned virtual box and set up a mint VM. It is already a smokin’ system. I am about to learn how to port forward through my router to allow me to remote into this system from on the road. I am studying many things including AI and deep learning, and therefore Python.

But I love this game (Empire) and have always wanted to do it right, from scratch, object oriented. That sounds like fun and a good learning platform to get back up to speed. I understand the size of the project. I am open to tools, including using a game engine, as long as the game engine is open source and works well.

And so I am asking if anyone wants to get involved. Isn’t that one of the points of open source? Allowing like minded people to contribute whatever they do best?

I’m not sure L1T is the best place to base this but I already belong so I figured I’d start here.

1 Like

Yeah, right…
73 000 rows later
What I gathered is, that you actually know what you are doing :smiley: Basically you are way ahead of me, so I don’t think I am by any means capable of giving you any useful advice.

:blush:it always starts out a quick story! The story was just to say that yes I’ve been around and I can figure stuff out. But knowledgeable help is always good.

1 Like

I know nothing (yet) about using C# and .Net under Linux, What I think I know is that the .net framework (.net core) is now available for use, licensed under the MIT license. Coming from .net in Windows I have to say that the .net framework is a huge, very well structured library of well tested code. It makes a lot of coding unnecessary since there is so much in the framework.

Having some time coding in C#, using that would be my preference. However, truth be told, the language is really just a thin veneer over the top of the framework so other languages, although having some significant differences, would likely merge well into a project built on .net core.

In years past I have run across some good stuff for hex cell games. Perhaps the best of the best is

RedBlob

2 days

Sounds fun. To use .net and c# on Linux you have to use the mono wrapper. A little clunky but should work.

https://www.mono-project.com

What about writing a plugin for an already built engine? I’ve been messing with Godot a bit and seems like building a plugin for database management would both be fun and save a ton of time.

https://godotengine.org

Whichever way you go please keep us up to date! I love seeing people share their creations.

1 Like

I’m still studying this. I was under the impression that that mono was an open source implementation of the .Net framework written by Linux devs. I am under the impression that .Net core from Microsoft replaces mono, and the need for mono.

But I really am just figuring this out.

1 Like

I was thinking the same as well.

Just an update, I have PyCharm installed on my laptop and home computers (windows 10). I have decided to use PyGame as the gaming platform for dev. It is at least a start. Long ago I found and perused RedBlobGames.com which has just a ton of stuff useful for simple games.

My intent is to use Hex Grids. They are more complicated than squares in many respects, but also have some advantages.

RedBlobGames Hex Grid stuff

The problem with using prebuilt libraries is that I have to come up to speed on the code but the advantage is that I don’t have to write the code. :grin: And the author seems waaay knowledgeable, much more than I.

I have been watching tutorials on writing simple games in PyGames. We shall see how it goes integrating hex maps into that. It sure would be nice if PyGames would integrate this stuff directly into the framework. Oh well.

Empire will require simple terrain. Land, Water, Mountains, Forests, Deserts. After that, military units such as infantry, armor, jets, bombers, and various ship types. Cities. All of these items have to be created as hex shaped sprites.

Rules are created dictating what terrains various military units can traverse. Ships can only traverse water. And cities on the edge of water. Land units can only traverse land. And transport ships and cities. Armor cannot traverse mountains. Airplanes can traverse anything, but run out of fuel after X distance unless landed in a city. Etc.

Military units have damage points that they can sustain in combat, and damage points that they inflict.

I hope to make all of those rules table driven, i.e. a table holds what types of terrain a unit can traverse, what damage they can sustain, what damage they can inflict. Much of this is defined already in freeware out in the universe.

My intent is to take the concepts and “rewrite” or “write from scratch” the game with Python, as an exercise in learning python and just because I want to. I have done C# stuff and love OOP. This begs for an OO solution. Coming from C#, Python is a little loose with scope, variable typing and so forth. But it is what it is, and it looks capable enough to write the game in.

And so I research and study. Getting set up. Learning basic Python syntax. Play around in PyGame. It always amazes me what is already out there.