CivOne - An Open Source remake of Civilization 1

@deathfry

I am not gone, just really busy with other parts of life at the moment. Nothing to worry about... development of CivOne always comes in bursts of a couple of weeks. I will resume development within a couple of weeks.
 
Sid talking about Civ1 in postmortem if anyone's interested:
At around 40min he regrets not making it moddable. Also later talks about why he introduced corruption, why you couldn't load game from the game menu, etc.
 
Last edited:
That's interesting, thanks axx. Looking forward to watching this.

I've updated CivOne to .NET Core 2.0 and I'm getting ready to commit a large set of technical changes. I know .NET Core 2.0 is not finished (currently Preview 2) but there's some improvements that I couldn't wait use.
The coming week, I will be working on optimizing and simplifying the current code, and I want to try to standardize some API calls for modding support.

After that, here's the shortlist I want to get working on first:
  • Finish the city view
  • Implement corruption and civil disorder
  • Implement Civilization Score
  • Get 100% compatible load/save games
  • Get the new website up and running
I am not focussed on a 0.1.0 release at the moment, first I want to really get back to coding.

Expect a new build in about 3 weeks... I will keep this thread updated.

Edit:
Status update: I've got the .NET Core 2.0 changes integrated, and I made some of the API standardization changes.

Then, I've added a much needed patch to the game: Allowing the game to be controlled on computers without a keypad. When the option is turned on, you can move units by pressing two arrow keys. After the first press, you'll get a visual 'helper arrows' on the screen, indicating which tiles you can move to. It looks like this: http://imgur.com/T4tebCw
You can then move in any of the three directions, or cancel by pressing escape.
The reason I implemented this is because my new laptop doesn't have a keypad, not even under FN keys, and playing with a mousepad is not the best thing in the world.

Edit 2:
Several 'free' graphics have been implemented, making the game somewhat playable without the original files. Still a lot of work to be done in that area... and not a priority, I just felt like it for a bit...

Edit 3:
More free graphics implemented. I will post screenshots of that soon.
Also, I've got building the palace (partially) implemented. It can be initiated through the debug menu for now... eventually it will be called through the Civilization score mechanism.
After this I will implement caravans and diplomats, which will be a lot of work. I need to figure out how the trade income is calculated, and how the costs of a revolt/buying units are calculated. If anyone has any pointers, please let me know.
 
Last edited:
I need to figure out how the trade income is calculated, and how the costs of a revolt/buying units are calculated.

So this means how much gold do individual units cost? What about the buildings? And how much gold does inciting a revolt in a city with a diplomat cost?
I will try to look into this.

Just one more thing, these 2 links might be of some help. They list all the stats of units and buildings including their costs.http://civilization.wikia.com/wiki/List_of_buildings_in_Civ1
http://civilization.wikia.com/wiki/List_of_buildings_in_Civ1
http://civilization.wikia.com/wiki/List_of_units_in_Civ1
 
Last edited:
Building, units and wonder costs have already been implemented.
The things I need to know are:
  • How much gold does a caravan unit get when entering a city?
  • How many shields does a caravan unit contribute when helping to build a wonder? (answer: 50)
  • How much gold does a diplomat have to pay to buy a unit?
  • How much gold does a diplomat have to pay for a revolt?
  • How much gold does a player receive when capturing a city?

Edit: Thanks tjs282!

Edit 2:
Building the palace is largely implemented and accessible via the Debug menu.
 
Last edited:
Building, units and wonder costs have already been implemented.
The things I need to know are:
  • How much gold does a caravan unit get when entering a city?
  • How many shields does a caravan unit contribute when helping to build a wonder? (this should be easy to find out)
  • How much gold does a diplomat have to pay to buy a unit?
  • How much gold does a diplomat have to pay for a revolt?
  • How much gold does a player receive when capturing a city?
The only question I know the answer to is the second: 50 shields per caravan. The other values aren't fixed, they're calculated. I don't know the exact formulae, but there are (EDIT: I was pretty sure I'd seen) threads covering all these items on this forum. The calculations are based on such variables as
  • Trade-routes: city ownership, size, distance between the 2 cities
  • Unit-bribes: unit-value, distance from the unit's capital(? Or home-city?), enemy treasury(?), relative culture(?)
  • Inciting revolt: city-size, happiness, relative distance from the 2 capitals, mission-type (subversion costs twice as much as revolution, IIRC)
  • Captured gold: city size(?), value (i.e. improvements built?), enemy treasury(?)
 
Last edited:
  • Like
Reactions: SWY
Last edited:
Wow axx, that's awesome. The Caravan formula is very useful indeed.

There's some stability bugs that I need to fix, but I'll try to get a new version online some time next week.
 
OK, bribes & revolts with diplomats (just scroll down the page):
https://forums.civfanatics.com/threads/diplomats.470127/

Regarding how much gold does a player receive when capturing a city - I couldn't find anything on forums but best starting point would be:
gold received = total enemy civ gold * (captured city size / sum(sizes of all enemy cities))
(at least until the real formula is found)

BTW as you might have seen from forum discussion there is a book (Rome in 640K) that gives formulas on all this stuff. Sadly there is (apparently) no online version.
 
Last edited:
Thanks for the pointers, the caravan functions are implemented now, but the formula (or my implementation) seems to be off... it's decent enough for now though.
City trade routes have not yet been implemented... I'll do that later.

I've found a copy of Rome in 640K at Amazon.fr. I think I'll order it next month... thanks for the suggestion. :)
 
I've got a basic plugin system working, and I've started working on an API for CivOne (published on nuget.org).
Plugins right now don't do much, except that they get loaded when starting the game, but over the coming time I'll expand on the API and provide samples in C#, VB.NET and F# here: https://github.com/SWY1985/CivOne-Plugins

The website will soon be expanded to include a mod/plugin database, a community translation tool (to make the game support more than just English) and a font editor. Later on, as the game development continues, more functions will be added to the website.

Most importantly: There's going to be an autobuild system, so there will be daily builds (only if there's any changes to the code) directly from the website soon.

Edit: Lots of code refactoring today, and I've fixed two breaking issues that cause the game to crash. As a bonus, I think I may have managed to fix the annoying lagging issue that causes the game to slow down. At least, the game appeared to run a lot faster, smoother and more consistant when I tried it today.
I'll (finally) post a new binary tomorrow, but first I want to write some more code today.
 
Last edited:
New version, finally!
This version includes the beginnings of plugin support. The first plugin is also included as a download link at the bottom of this post. Screenshots of the plugin can be viewed here: http://imgur.com/a/5VdQQ

Here's the changelog since the last version:

  • General: Changed target to .NET Core 2.0 (preview 2)
  • General: Replaced custom drawing classes with new .NET Core 2.0 drawing classes
  • General: Replaced IModal, IFast and IDefault interfaces with Modal, Fast and Default attributes
  • General: Several free graphics implemented, to make the game (somewhat) playable without original files
  • General: Added unit test project for future use
  • General: CivOne.API for plugin development, available from nuget
  • Improvement: Implemented optional Arrow Helper setting to control the game without a keyboard
  • Implemented: Top Five Cities screen
  • Implemented: Recording visited tiles per player (needed for save games)
  • Implemented: Load game settings
  • Implemented: Load RailRoad tile improvement
  • Implemented: Load World Wonders and anthology value
  • Implemented: Load players starting X coordinate
  • Implemented: Building the palace (partially implemented, available from debug menu)
  • Implemented: Caravan functions
  • Implemented: Frame skipping (smoother graphics on fast computers, less lag on slow computers)
  • Fixed: Game crashing when attcking tile with no unit on it
  • Fixed: Several crashes when loading a game
  • Fixed: Set correct active unit when loading a game
  • Fixed: Crash when starting a new game
  • Fixed: Show corrupt/incorrect save games
  • Fixed: Correct centering of World Map
  • Fixed: Hide mouse cursor when AI is moving
  • Fixed: Update invalid city tiles
  • Fixed: Regression that made tasks never complete, hanging the game (by jakobmulvad)
  • Fixed: Small fixes to tile yield and text rendering on city tiles (by jakobmulvad)
  • Fixed: Attitude Survey crash when population is 0
  • Fixed: Crash when entering ones own city
  • Fixed: Crash when searching for city with empty entry
  • Code cleanup: Removed unused Bitmap object
  • Code cleanup: Removed unused usings from code
  • Code optimization: Central function for drawing background patterns
  • Code optimization: Use indexer instead of GetPart on resources
  • Code optimization: Implemented UserInterface menu classes (will make it easier to manipulate menus through plugins)
  • Free graphics: Gray and blue background patterns
  • Free graphics: Land, sea, forest and plains tiles
  • Free graphics: Unit, city and fortify graphics
  • Free graphics: Non-generic Settlers and Militia units graphics
  • Free graphics: Default to alternative destroy animation when using free graphics

Here's the download links:
To run the game, extract it anywhere and start one of the batch files.
To use plugins, extract the .dll file to the /plugins/ folder where you extracted CivOne.
If you run into any problems, please let post it here or report a bug to GitHub.

Edit: The (C#) source of the Better Menus plugin has been posted here: https://github.com/SWY1985/CivOne-Plugins/tree/master/Samples/C#/better-menus
 
Last edited:
great stuff. I'm not technically proficient in this field, are plugins similar to mod support?
Sadly my laptop is on repairs :mad: hopefully I'll be able to test this asap.
 
  • Like
Reactions: SWY
Hey all! It's great to see that you're still managing to find time for this project! I'm still as supportive as ever (at least in spirit) even if life has totally gotten in my way these past months.

I'm gonna find some time to give this latest build a go, SWY cos it sounds great!

EDIT: Download link returns a 404, but I can still find it in the downloads section. "files" in the urls of the link should be "Download" and "Plugins" for the plugin =]. I'll post this bug onto the Git lol!
 
Last edited:
  • Like
Reactions: SWY
Oops, I fixed the links, thanks. Looking foward to your feedback.

@axx
Yes, plugins and mods are the same thing. I am not sure what to call them... sometimes mod seems good, sometimes plugins seems better. I call them plugins for now.

@DracoNoir
I hope nothing bad has happened. If so, I'm just some random guy on the internet, but as someone who has been dealing with depressions, I know life has its ups and downs.
Keep your spirits up, you are a great person and things will get better.
 
Thanks, SWY for your progress. Despite the fact I'm silent I'm still updating this page everyday. I'll wait for fully functional version, thank you for your job!
 
  • Like
Reactions: SWY
Thanks for the support.
I've made a lot of changes since last friday, and I'm in the middle of some big changes. The current version (from source) is somewhat broken but it's all working towards something. I'm aiming at another (fully functional) release next Saturday. Here's the changelog so far:
  • Split game logic and runtime (this allows for different runtimes, like Android, GTK, QT, win32, web)
  • Implemented experimental win32/gdi+ (legacy) client
  • Fixed: Playing sounds was no longer working after runtime split (OpenTK runtime)
  • Fixed: Full screen toggle on Linux
  • Fixed: GoTo icon on units was not always visible, even though GoTo was active
  • Fixed: GIF files (for screenshots and map exports) were invalid and could not render correctly in Firefox. This has been fixed
  • Reimplemented screenshot function into Game Logic (ctrl+F5)
  • Reimplemented expanded screen size (non-16:10 aspect ratio)
  • Added startup parameter to skip data files check nag screen (allows the game to run without original files)
  • Added startup parameter to run the game without sound
  • Added startup parameter to skip credits screen
  • Added startup parameter to skip new game intro
  • Added save game map to image function (ctrl+F6)
  • Implemented expanded screen size for Credits and New Game screens
  • AI improvement: AI won't attack with Settlers, Diplomats and Caravan units
  • AI improvement: Smaller chance AI will use transport unit to attack
  • AI improvement: Smaller chance AI will attack if opposing unit has stronger defense
  • Several big code refactorings and namespace reorderings
  • Simplified map drawing code (work in progress)
  • Moved several drawing methods to become more accessible for future plugin development (work in progress)

More changes are coming... I want to try getting the following finished by Saturday:
  • Implement diplomat functions
  • Unhappiness/Civil disorder
  • Demographics screen
  • Partially implement civilization score
  • Finish palace building code
  • Disasters
  • Make AI build World Wonders
  • AI respawning
Edit: I've been doing a lot of code refactoring, simplifying code, removing old workarounds and reducing double code and optimizing existing code.

In the mean time, I've also added screen expanding code to several screens (like the credits and new game screen), so the game will scale up to non-16:10 monitors. This is what the game currently looks like on a 21:9 monitor:

63bUs86.gif


3BHBRYI.gif


The cleanup is useful because it will make future development easier. It also gives me good ideas on how to expand the plugin API, so future mod development will be able to change/modifiy/improve more aspects of the game.

Given the current path I'm on, the features listed above haven't been done (at all) yet. I will get to that later on. I think the next preview version might not be finished on saturday. Maybe sunday or monday.
I will keep updating the changelog, so keep watching this post. :)
 
Last edited:
Back
Top Bottom