CivOne - An Open Source remake of Civilization 1

Hi all
A short message to thank everybody who worked on CivOne. I have just landed on this forum literally minutes ago, but I find it amazing that some people have collaborated on such an undertaking. I have started playing Civ1 back in 1991 when I was a student - wish I had kept the original game box! - and haven't stopped playing ever since (it's the only game I enjoy playing on a computer at all).
I used to develop early in my career so I do have a bit of techie experience though unsure whether my knowledge is completely outdated or not, but I do hope to be able to contribute in some way. If anybody is still active out there, give me a shout!
I haven't read the entire thread just yet, but I assume the original Civ1 code from Microprose is not available, and never will be?
Cheers from London
Dom
 
No, the source code isn't available. I've watched Sid's interviews over the years but I've never heard him say if he still has the code and who owns it.
CivOne tries to recreate original Civ1 as closely as possible (with all the bugs), but you'd have an option to run with mods and patches.
SWY added a neat debugger into the game (civ2 style) which enables you to add units, techs, change gold etc. :)
There are issues listed on Github repository where you can contribute. Lots is still unknown, although recently guys like Tupi have been posting threads here on game's mechanics playing around with assembly.
And btw for me also Civ1 is one of rare (perhaps the only one) games I can play on PC, now that I'm older.
 
There probably should be a getting started guide in the git for devs but basically:

If you are on windows you need to go to https://www.libsdl.org/download-2.0.php and download sdl2.dll and put it somewhere in your path. I just put it in c:\windows\system32. If you are on linux I guess you need to add it with your package manager.
Download and install dotnet core 3.1 sdk for your OS: https://dotnet.microsoft.com/download/dotnet-core/3.1
Download and install vs code: https://code.visualstudio.com/download
Clone the civone repo: https://github.com/SWY1985/CivOne
Open the civone folder in vs code
You should be able to run it now

Te first time you run it you will be asked where your original civ1 files are. CivOne uses the images from that folder.
 
Last edited:
Thanks. I finally found a bit of time to give it a go but I must admit I am way too unfamiliar with modern dev frameworks to have made much progress (when I was developing, it was vi, gcc and... well, that was it). Trying to understand why DLL 'SDL2' is missing. If someone has the courage and time to give me a hand, it would be appreciated, otherwise I'll try to work it out.
 
Thanks. I finally found a bit of time to give it a go but I must admit I am way too unfamiliar with modern dev frameworks to have made much progress (when I was developing, it was vi, gcc and... well, that was it). Trying to understand why DLL 'SDL2' is missing. If someone has the courage and time to give me a hand, it would be appreciated, otherwise I'll try to work it out.
Sorry, my instructions were incomplete.

If you are on windows you need to go to https://www.libsdl.org/download-2.0.php and download sdl2.dll and put it somewhere in your path. I just put it in c:\windows\system32. If you are on linux I guess you need to add it with your package manager.
 
No worries, thanks. I had actually worked it out last night and ended up building and running the code. I played a game which went super fast as my cities didn't seem to grow at a normal pace, and it crashed at around 1500AD because of a reference to an un-instantiated object. Other issues I've seen:
- barbarians destroying all defending units in a city, but then not invading it
- 'We love the president day' message appearing at every single turn for the same city over long periods of time.

Can someone point me to the 'master' or 'authoritative' list of bugs and todos? I'll also need help when I want to check my code back in as I have never used Git before.

But altogether, very impressed with the game, quite an achievement!
 
On another note, I was at my parents' a cpl of weeks ago, and look what I've found in a box...
civ.png
 
No worries, thanks. I had actually worked it out last night and ended up building and running the code. I played a game which went super fast as my cities didn't seem to grow at a normal pace, and it crashed at around 1500AD because of a reference to an un-instantiated object. Other issues I've seen:
- barbarians destroying all defending units in a city, but then not invading it
- 'We love the president day' message appearing at every single turn for the same city over long periods of time.

Can someone point me to the 'master' or 'authoritative' list of bugs and todos? I'll also need help when I want to check my code back in as I have never used Git before.

But altogether, very impressed with the game, quite an achievement!
Oops, we love president day appearing over long periods of time would be my bug.

I don't think there is a master list of bugs, The original author and fire-eggs seem to have their own lists:
https://github.com/SWY1985/CivOne/issues
https://github.com/fire-eggs/CivOne/issues

Git can take a bit to get used to. First thing is to have your own github account and make your own fork of civone. Then create a branch for each issue you work on. When you are happy you can make a pull request to the above repos.

These videos are a good intro to git:
 
I've got some additional information in my Wiki as well : https://github.com/fire-eggs/CivOne/wiki
including an attempt to describe "what's where" in the source.

Thanks Kevin, that helps a lot. I believe I will have to spend quite a bit more time to understand the whole structure of the game and its main components (the map, the unit and city objects, etc...). I'll make some notes and write stuff up; I'll share that with you so you may, if you want, add it to your Wiki.

In regards to https://github.com/fire-eggs/CivOne/issues/104 (unsufficient documentation), what does everybody believe is the best strategy? Obviously the more documentation the better, but there comes a point when you just can't write everything down within the code as it then becomes cumbersome to read (and maintain). One of the ways I used to alleviate that was to put unique reference numbers (e.g. // +-+-+-+-+-+-+- CIVone_comment_#000001 +-+-+-+-+-+-+- , +-+-+-+-+-+-+- CIVone_comment_#000002 +-+-+-+-+-+-+- , etc...) and then embed these references in the separate documentation - which might be Fire-Egg's wiki in this case. That way you've got code on one side, doco on the other, and clear 2-way pointers between one and the other. Thoughts?

Dom
 
Last edited:
> I'll make some notes and write stuff up; I'll share that with you so you may, if you want, add it to your Wiki.

That'd be great - a fresh perspective would be helpful. It might even get me inspired to push this project along a little further!

re: documentation
I'm thinking there are two kinds of docs needed.
One is comments in the code: "what is going on right here". Lots of the code could use these.

Two is "how to do it". E.g. some neophytes might be expecting "immediate mode" code. I.e. "at this point, show a popup and when the user makes their selection, update game state". SWY has set up a "task based" system: create a task which will show a popup; add that task to a queue; when the task completes, continue on to another task or to code which updates game state. Stuff like this and other big "systems" in the code need to be explained, which is to me where the Wiki comes in.

Just one opinion, any and all contributions I'm sure will be helpful!
 
This is exactly what I have been looking for for years. I love playing civ 1. I hate freeciv it just doesn’t do it for me. I am a casual game player, I prefer the original layout, graphics and sounds and I don’t knitpick on the fine details like a mathematician just to compete and enjoy it.

The original game has a few hang ups though I would love to see altered.

* The AI difficulty levels doesn’t make the AI better players it just overpowers units and grants free technologies
* The sounds don’t play properly
* The world map is too big
* No multiplayer

How long do you think it will take before the remake may be released? I have been dreaming of a project like this or being able to multiplayer something like this with friends who haven’t played civ before.

It would be really cool to add the option after reaching space you start on another planet in a flowing type of way, maybe you lose a lot of your previous worlds technologies. It kinda sucks when the game ends.
 
Well its been over two years since I contributed here, and even then it was only game knowledge and comparisons with CivDos! As with everyone, life got in the way, but I'm glad to see there is still a flame under this project.

Not much more I can do to help now - my C# knowledge enabled me to write a Dopewars-style text-based trading game a while ago but thats about it. My knowledge of the inner workings of Civ has well been passed now as well, so all I can do is just offer my support!
 
Hi
Nice to see CivOne is still alive.
I downloaded the project and was able to build, But when I tried to start debug I get this message:

A project with an Output type of Class Library cannot be started directly
In order to debug this project, add an executable project to this solution which references the library project.
Set the executable project as the startup project.

Where is the "executable project" ?

I had the same problem when I made some work in CivOne some years ago, but I was able to solve the problem back then. But not today. ( alias EnockNitti )
Note: I am an old C/C++ programmer but novice on C#

Edit: Using VS2022,
 
Last edited:
Hi
Nice to see CivOne is still alive.
I downloaded the project and was able to build, But when I tried to start debug I get this message:

A project with an Output type of Class Library cannot be started directly
In order to debug this project, add an executable project to this solution which references the library project.
Set the executable project as the startup project.

Where is the "executable project" ?

I had the same problem when I made some work in CivOne some years ago, but I was able to solve the problem back then. But not today. ( alias EnockNitti )
Note: I am an old C/C++ programmer but novice on C#

Edit: Using VS2022,

Choose Civ1.SDL as a startup project and it should work (for whatever reason). Tested it on VS2019.

BTW SWY specifically said he was developing the project in vscode. It's easy to launch from there, you can also launch the demo, setup, etc. I don't see those options in VS2019.
 
Hmmm...?

I can't see any Civ1.SDL in my solution.
But I have a sdl folder in the CivOne project.
The CivOne project is set as startupProject.
But I can start the game from command window directly with the file ........\CivOne-master\runtime\sdl\bin\Debug\net5.0\CivOne.SDL.exe
But I want to be able to start by using F5 in debug mode.

Edit: Got it running by setting CivOne.SDL as startup
 
Back
Top Bottom