CivOne - An Open Source remake of Civilization 1

Hi,

I am a little bit interested in this project and would like to try it out as an alternative to the "official" civ 1, because that one has some bugs, though perhaps debugging official civ1 or reverse engineering it somewhat could also be interesting.

Anyway I decided it was time to fork this project to safe guard it's source code and also because I have a good working version of visual studio 2019 on windows 7.

So I cloned this project to my local source code drive, opened it up in visual studio 2019, it wanted to install all kinds of .net things that went smooth.

I open the project, I find the solution a bit confusing, not sure where the files exactly are but I did find some.

I do a build, but it cannot run it, cause it was set to api or something, so I set it to exe build or something.

Then it can't run because SDL missing and other files missing.

There is no documentation how to set things up, it's a bit late for me and I should go to sleep, but I decide to give it a little try so I download SDL2.dll and put it in folder where exe is.

I run program, but I noticed the graphics are screwed up because this laptop has broken 3d chip as far as I know but that is kinda beside the point because normal 2d/desktop graphics work fine.

But this app doesn't work fine... so what is necessary is some options to switch to software rendering mode.

I do not know if C# has it, but it can be very handy to have software more in case hot graphics card or chips die or become damaged or driver issue etc.

So do you have any idea which code to change to make this possible ?

Anyway one last question: where do I put SDL2.dll best ? and also where do I put the civilization files ?

Do I simply dump everything in:

..\CivOne\runtime\sdl\bin\Debug\netcoreapp3.1

or is there a nice/cleaner way to set it up ?

I also tried OpenXcom... and there I downloaded some dependency package and simply dropped it into a dependency folder and that was all I had to do... well besides from also copieing the game files to some ufo folder.

So this could be done a bit better in CivOne perhaps, OpenXCom might be a bit more advanced... I have no idea how it finds/detects the files but it does... kinda funny.

Anyway I am hoping that the readme.exe on this github project gets updated with at least some minimum instructions or explanation of what is where and especially where what should go to get it running.

Worst case scenerio for me is I disabled the graphics 3d chip/radeon mobility, then I might be able to run this app/game but with blurred/low res graphics that not cool.

So does this game have any configuration options for software rendering ? It's quite funny/amazing to see which GUI technologies rely on GPU and which don't the ones that do have strange triangles/buggy graphics :)
 
The SDL2.dll file is in my "bin" directory. Once you compile the project this folder should show up and put the dll there.
As for the civilization files, I believe the first time you run Setup.but it should ask for the directory where the original game is located. Otherwise just copy all the original files into the "data" folder. There's some sort of guide on the wiki page of the project.
Preferably use Vscode and not Visual studio. The project owner (SWY) mentioned he prefers VScode for a number of reasons (I think he explains it somewhere in the github wiki).
Also that repository hasn't seen much action, SWY has been MIA for quite a long time now. There's a more up-to-date fork so please contribute there if you wish. There's no need to have tens of forks of the project each going their own direction.
Also I'm using integrated graphics on my laptop and it runs without problem.
 
Hi, I read your post.

Unfortunately I have to tell you that my game is not a Civilization 1 clone, even if the GitHub repository is called that. When I started development I couldn't think of a better name for it. But now it's a 4X game in the style of Civilization 1 and with various ideas of its own. Also, I can't say if it will remain open source, because I hope to be able to sell the game one day and a publisher might object to the code just being on the internet.

But if that doesn't bother you, then you can have a look at my YouTube or Twitch channel, where I stream most of the development. I am currently revising the menu system on a larger scale. Some of this stuff is from the terminal-only days of the game and other parts are based on a quickly cobbled together system that should only allow me to test the rest of the systems with the SFML.
 
Unfortunately I have to tell you that my game is not a Civilization 1 clone, even if the GitHub repository is called that.
That's a slight shame but hey if it's still close to Civ1 then it'll be of interest to this community!

Anyway for those following this thread over the years I feel it's important to mention there's been a few interesting developments over the last few months.

dom111 has started his own CivClone project and has already made a LOT of progress. His work is in this thread here:
https://forums.civfanatics.com/threads/yet-anther-clone.680494/

and a new user rahorvat has just appeared and announced he's made great progress with disassembling Civilization 1 for Windows and translating it to C# in this thread here:
https://forums.civfanatics.com/thre...ation-1-contacting-sid-meier-directly.682623/

Also for any confused new comers I think these are all the GitHub repositories posted over the years in this giant thread:
https://github.com/SWY1985/CivOne
https://github.com/fire-eggs/CivOne
https://github.com/HonkiTonk/Civ-Klon

.
 
Last edited:
Shameless necro, in hoping this project never gets forgotten. I hope everyone who has been a part of it so far over the years is doing well =]
 
Shameless necro, in hoping this project never gets forgotten. I hope everyone who has been a part of it so far over the years is doing well =]
Unfortunately, the CivOne project didn't succeed. But, hey, there is a new kid in the town: OpenCiv1.
The OpenCiv1 has gone so much further than any previous attempts, it's completely playable with all functionality working! ;)
And I'm working relentlessly to remove (translate) assembly from main code so more people can get involved in the project and make OpenCiv1 the ultimate open source Civilization 1 game clone :)
 
Last edited:
Shameless necro, in hoping this project never gets forgotten. I hope everyone who has been a part of it so far over the years is doing well =]
I'll see your necro, and raise you a forking of the CivOne project to complete the rewrite and fix the bugs. I have been using Claude Code to make a version of the game with all the rules and visuals intact, but I've expanded the playable map. You can try it at https://github.com/mwerneburg/CivOne
 
I'll see your necro, and raise you a forking of the CivOne project to complete the rewrite and fix the bugs. I have been using Claude Code to make a version of the game with all the rules and visuals intact, but I've expanded the playable map. You can try it at https://github.com/mwerneburg/CivOne
Sorry guys, but I simply don't get why you want to work with old partial code when we have OpenCiv1 project which has done so much more and could benefit from other people helping the project become better and more complete.
 
For me personally, the reason would be that while the OpenCiv1 project may be legally justified in its approach under EU law, that does not apply for those of us who don't live in the EU. CivOne is a more "clean" implementation, not relying on disassembly of the original game, if I remember correctly, and OpenCiv3 also followed that more "clean" approach.

That is a potentially important distinction. The point in OpenCiv1's justification, "Created code independently (for example, didn't look at or copy any of the original source code)." - in my understanding, in the U.S., the other part, "Observed functionality via disassembly" essentially invalidates "didn't look at any of the original code". Slightly different wording, yes, but in my jurisdiction, my understanding is that you cannot have the same people looking at disassembled code and writing the new system. I could be incorrect, but I wouldn't want to test the theory and find out the hard way that I was correct.

Essentially, what I would consider the "safe" barrier is what Phoenix Technologies used to create a third-party BIOS in the 80s - the people who examine the existing code are separate from the people who write the new version. And while I have never looked at the Civilization I code, my understanding is proper separation hasn't been maintained elsewhere in OpenCiv1, and therefore as someone who would like to stay out of legal trouble and on Firaxis's good side, I prefer to steer clear from contributing. The same may apply for mwerneburg.

Thus I can understand the appeal of continuing to work with the CivOne base.
 
I was wondering how long it would take before another contributor picked up this project.
I started working on the fire-eggs fork some time ago.
I also looked at rahorvat's reverse engineering project and decided against it, because it goes beyond my level, and I wanted to write code myself. Sorry, rahorvat!
So CivOne is not dead! I doubt any oss project is really dead, as long as the code is available and can be forked.

My fork is here:
https://github.com/ChrisWiGit/CivOne

The changes are listed here: https://github.com/ChrisWiGit/CivOne/blob/master/CHANGES.md

@mwerneburg, you forked directly from Solen1985, so you are missing the commits from fire-eggs. Was that intentional?
 
For me personally, the reason would be that while the OpenCiv1 project may be legally justified in its approach under EU law, that does not apply for those of us who don't live in the EU. CivOne is a more "clean" implementation, not relying on disassembly of the original game, if I remember correctly, and OpenCiv3 also followed that more "clean" approach.

That is a potentially important distinction. The point in OpenCiv1's justification, "Created code independently (for example, didn't look at or copy any of the original source code)." - in my understanding, in the U.S., the other part, "Observed functionality via disassembly" essentially invalidates "didn't look at any of the original code". Slightly different wording, yes, but in my jurisdiction, my understanding is that you cannot have the same people looking at disassembled code and writing the new system. I could be incorrect, but I wouldn't want to test the theory and find out the hard way that I was correct.

Essentially, what I would consider the "safe" barrier is what Phoenix Technologies used to create a third-party BIOS in the 80s - the people who examine the existing code are separate from the people who write the new version. And while I have never looked at the Civilization I code, my understanding is proper separation hasn't been maintained elsewhere in OpenCiv1, and therefore as someone who would like to stay out of legal trouble and on Firaxis's good side, I prefer to steer clear from contributing. The same may apply for mwerneburg.

Thus I can understand the appeal of continuing to work with the CivOne base.
While I have a different opinion on the matter. I also respect your choice.

I will just say: Do not let fear of people or corporations rule your life choices... :)

If anyone wishes to contribute they are welcome, if not, that is also fine.

Cheers
 
Sorry guys, but I simply don't get why you want to work with old partial code when we have OpenCiv1 project which has done so much more and could benefit from other people helping the project become better and more complete.
Hi, rahorvat. I just don't like the approach. I appreciate the mindset, I did some assembly coding myself back in the mid '90s and understand the appeal. But the time for that code has passed. I liken it to my day job, where we have a COBOL installation with roots in an initial deployment in 1988. At some point you simply rebuild. The right approach in my mind is to make a stable game and increment the features. While the current batch of AI companies are still throwing money at automated solutions like Claude Code I will go that route while I can afford it.
 
I was wondering how long it would take before another contributor picked up this project.
I started working on the fire-eggs fork some time ago.

@mwerneburg, you forked directly from Solen1985, so you are missing the commits from fire-eggs. Was that intentional?
No, sir. I found the original project, went to it in my browser, and was redirected to Solen1985 and away I went. I see more interesting improvements in your version than I can count (YAML save files!!!) and will perhaps re-base in part. I have started rewiring the interface on mine to run full screen on my M1 Macbook Air with a time-appropriate "cassette futurism" theme (produced by Claude Code), so I suppose I'm running on quite a tangent. If you see anything in my commits that is of interest, please help yourself.
 
While I understand the legal concerns, from a gameplay standpoint I prefer reassembly projects as the end result usually perfectly recreates the original experience (especially AI behaviour) before applying modernizations & enhancements. While rebuilds (usually built from observation, hacks, extractions and wiki info) get close they don't achieve that perfect behaviour recreation resulting in some fans being turned off (usually when an AI does something ridiculous or some funky creature spell/ability/buff doesn't quite work the same way). I think of rebuild vs reassembly projects in the Dune 2, CnC and Master of Magic communities being good examples of the differences. That being said when a project is a recreation of one of my favourite games I'll always support it no matter what the method is, and if there's multiple projects I'll always support all of them. Although when it's variants of of the same project/code (Birth of the Federation 2 breakup projects and C-evo spinoffs come to mind sigh... ) going on due to either disagreements or not knowing about each other I usually say "come on guys.. work together lol!", so @mwerneburg and @ChrisWi I'd def recommend you keep in touch now that you know about each other.

All that being said @rahorvat weren't you talking the other day about changing all the graphics in OpenCiv1 so that it looks like a different game and avoids some of the legal risk? Or am I imagining things lol? As I generally prefer accurate visual recreations too (just with a higher viewing/world resolution) so I'm kinda hoping that's not the case and those corporations aren't getting to you too my friend haha. ;)

Considering all my efforts to get Civ1 back into modern stores have been unsuccessful I don't think anyone has to worry about 2K sending a C&D lol. Their priorities are pretty clear.. the next game the next game the next game.
.
 
Thank you @Quintillus for raising some important questions for me. Since we started this discussion in this thread I will continue it here.

The assumption that disassembly = source code does not stand, but, disassembly can be considered a protected expression of the source code.
Since I'm interested in 'What is right', and not in 'Can I do it without consequences'. I personally choose to follow the law as much as humanly possible, I'm in an ethical dilemma.

While I personally don't see any harm for 2K or the authors that could come from trying to preserve 30+ year old game, even with sharing parts of the disassembled code, the following comparison table (which I did with the help of AI 😀) has certain proofs that I should not share complete disassembly with others publicly, just necessary parts. The preferred option would be not to share it at all.

So, this project still exists in a certain grey area.
Nevertheless my plan from the beginning was to completely rewrite the code base not to contain any of the protected expression of the original code, that is still not possible (until I finish rewrite step) as the remaining disassembly still carries that protected expression.

Since I could not find any of the interested people in doing the preferable clean room approach, unfortunately that path is also not possible.

There is also an indisputable fact that my initial approach has produced excellent results in producing the completely functioning code base.

Information for young players to consider in a similar projects 🤔:

Comparison Table: EU vs. US Copyright Law on Disassembly for Preservation (1991 Software, No EULA)
FeatureEuropean Union (Software Directive 2009/24/EC)United States (Copyright Act of 1976)
Primary Legal BasisDirective 2009/24/EC (Art. 5 & 6) - sui generis software protection17 U.S.C. § 107 (Fair Use) + 17 U.S.C. § 117 (Archival & Essential Step)
Is disassembly explicitly permitted for preservation?Yes - Art. 5(3) allows "observing, studying, or testing" the program to understand its ideas/principles. Preservation is a recognized study purpose.No explicit provision - Must rely on Fair Use (case-by-case) or §117 adaptation rules.
Can you disassemble to make the program work on modern hardware?Yes - Art. 6 permits decompilation for interoperability (e.g., making old software compatible with new OS).Likely yes - §117(a)(1) allows adaptation as "an essential step in the utilization" of the program with a machine.
Is the disassembled code considered "source code" under copyright law?No - It is a reverse-engineered representation, but still a derivative work of the original copyrighted code.No - Same principle. The original source is protected expression, not disassembly output.
Can you distribute the disassembled source code?No - That would be reproduction/distribution of a derivative work without permission.No - Same prohibition. Only the original lawful owner may keep the adaptation for personal archival use.
What about "abandonware" (no longer sold or supported)?Irrelevant - EU law grants statutory rights regardless of commercial availability, as long as you are a lawful user.Relevant - Lack of commercial market strengthens Fair Use factor #4 (market harm). Weighs in your favor.
Are there any conditions or restrictions?Yes - You must be a lawful user (owner or licensee). Disassembly must be necessary for the permitted purpose. You cannot use info to develop a substantially similar competing program.Yes - Under §117(b), any adaptation must be destroyed if you cease to own the original copy. Also applies to Fair Use: purpose must be transformative, not purely commercial.
Can the copyright holder sue you for disassembly?Unlikely to succeed - The Directive creates a binding exception that overrides general copyright. Courts will dismiss if you follow Art. 5/6 requirements.Possible but unlikely - No statutory exception for preservation, so a lawsuit could be filed. But with no EULA and old software, Fair Use is a strong defense.
Can the copyright owner prohibit disassembly via a EULA?No - Art. 8(1) of the Directive voids any contractual clause that prohibits the Art. 5/6 exceptions. EULA bans are unenforceable.Yes - In Bowers v. Baystate (2003), a EULA ban on reverse engineering was enforceable as a contract, even if Fair Use would allow it. But your case has no EULA, so this is irrelevant.
Legal risk level for your 1991 preservation projectVery low - Clear statutory right. You are acting within the law.Low to moderate - No EULA removes the contract risk; Fair Use and §117 provide strong arguments. However, US lacks an explicit preservation exception, so some uncertainty remains.
Best practice for complianceDocument lawful ownership. Limit disassembly to what is strictly necessary. Do not distribute output.Same as EU + retain original media. Be prepared to justify the four Fair Use factors if ever challenged.

@mwerneburg and @ChrisWi I'm also trying to modernize the code base and completely rebuild the code. But for me, to provide a modern rebuilt code base, this dreaded part has to be done. The initial rewrite has to be completed, and then lifted and rebuilt with a completely modern expression.

No, @Blake00 nobody got to me yet 🙂

So my question for you, the community, is this: Should I continue for some time in this gray area, trying to preserve this iconic game, should I quit, work alone and not share my progress, or any other thougths?

What is your suggestion/opinion on the matter, lets vote?
 
Last edited:
In my opinion, this is completely up to you. It is your project, it is your free time. If you are afraid of legal troubles, even if the chances are minimal, I would never tell you what to do.

The original project started 12 years ago, and I didn't notice until some time ago. I love the original Civilization game, and at this time also wanted to improve my skills in working with legacy code, architecture and refactoring.
I also evaluated your project and I was blown away by this monumental work and huge workload. Legal aspects weren't even on my mind. So I started to contribute on fire-eggs fork, and had fun doing it.

Today, I'm using AI extensively to implement features fast, but also to learn how to stop AI from writing bad code (spoiler: lot's of work, correct instructions, agents, reviews see here, lots of tokens). But still, I have fun doing it. For me, it's not about the project itself, but about the learning new skills.
 
Back
Top Bottom