CivOne - An Open Source remake of Civilization 1

SWY and hospital.
I am a C# developer myself and although the coding standards are not my preference, i have to admit on the few files i checked the readibility of the code is really good, clean and easy to grasp.

i would like to know how/where you guys coordinate the workload? is it somewhere public ?
Im not going to promise to help, but i am curious to see how this continues and maybe, if one day im feeling very bored i may try to add some contribution to the project, so. i would like to know where i would be able to find what are the intentions for the next step
 
I am new to the project myself. I just ask here what may need to be done or if there is something I want to do I ask here if anybody else is doing it already.
 
I am new to the project myself. I just ask here what may need to be done or if there is something I want to do I ask here if anybody else is doing it already.
is there anyone else working on the project apart from yourself and SWY ? i was under the impression its SWY's project and you been helping out in little bits and bobs under he's requests
 
i play civDos as well. and im definitely not as good player as many in the forum (after all i never played emperror and survived to brag about the story)
i recall having nuke reactors going kaboom, but never from riots. so, before nuclear fission.

I used to play Emperor all the time in the 90s but I haven't touched the game in 20years until now so I decided to be cautious resulting in my current game being at measly Warlord level haha. Big mistake as I'm dominating so bad the game is becoming boring. Should have done King level to ease back in haha!

Anyway in my current Prince game I had a city riot on me and literally that same turn KABOOM! A nuclear plant meltdown in the same city.
 
Anyway in my current Prince game I had a city riot on me and literally that same turn KABOOM! A nuclear plant meltdown in the same city.

did you have nuclear fission already researched ? next time it happens would be cool to see a screenshot as well
 
did you have nuclear fission already researched ? next time it happens would be cool to see a screenshot as well

Yeah sorry I should have kept the savegame to upload here as it was only 2 days ago it happened. I think I still didn't have nuclear fission yet at the time. I haven't had any cities riot on me for a while as now that I've got all techs I've ramped up luxuries.
 
@hospital
Thanks for the PR, I've added it.

@tuga2112
Yes, I'm the main developer, but if you'd like to write some code, it's much appreciated. At the moment, this forum thread is the main way of communication, but you can comment on any GitHub issues and submit bugs/make feature requests as well.

I'm on an idle period right now... there's a lot of things happening at work and I can't find the time to work on CivOne, but every few weeks/months I find a lot of time.
 
@SWY I am having some trouble getting the animation of cranky people walking across the city working correctly. I started with the soldiers walking but it seems like I have my measurements wrong or something as it's including the box and outside the box sometimes. Can you take a look at my code please?

https://github.com/cdonges/CivOne/b...7e2e80674d894466/src/Screens/CityView.cs#L782

Have you carefully measured the assets spritesheets ?
Ive experienced dificulties like what you describe a lot back when i was in uni with 2D games spritesheets. it was common for me to have to alter the sheets manually because images are not exactly centered.

i can have a look at them later after work if you want a hand ?

i had a quick look for the spritesheets in the git page out of curiosity, but couldnt find them got any links for that ?
 
i had a quick look for the spritesheets in the git page out of curiosity, but couldnt find them got any links for that ?
CivOne uses the images from the original civ. The images can't be added to git for copyright reasons.
 
I have sorted my sprite issue. For reasons only known to the CIV programmers they made the sprites in RIOT and RIOT2 different sizes and I didn't notice.
 
Sorry, I didn't notice you earlier post. Glad you figured it out.
I've got a crude sprite viewing tool here that helps me with figuring out the pixels. I'll polish it a bit and put it up on GitHub later this week.

I wish I had more time to get back to CivOne, but it's just not possible right now. Family and work are more important.
 
Sorry, I didn't notice you earlier post. Glad you figured it out.
I've got a crude sprite viewing tool here that helps me with figuring out the pixels. I'll polish it a bit and put it up on GitHub later this week.

I wish I had more time to get back to CivOne, but it's just not possible right now. Family and work are more important.
Tool sounds good. I ended up logging the co-ordinates and passing them to imagemagic to crop them and see what they look like.

I nearly have the disorder stuff working. There are a couple of small things and then 'we love the president day'.

Agree, family and work always come first.
 
Hello there!

I have found some time to look at the CivOne code again. Here's a small list of changes that I've already finished in the past couple of days:
  • Fixed a bug in the attack strength calculation logic (thanks to @PeppiKokkiSC2)
  • Fixed: Changed the number of shields on Horses tiles (from 3 to 2)
  • Draw all layers seperately on the client side (this is a preperation for future developments to enable custom drawing and high resolution texture plugins)
  • Create a seperate AI instance per computer player
  • AI: Changed Settlers production based on leader character traits
Then, I probably messed up the GitHub repository. I discovered that I used a private mail address in several commits to the repository and that shouldn't have happened so I followed a guide (from GitHub) to rewrite history, making all my commits use the correct email address. This works, but it might cause problems when you update your local repository. The fix is: Delete the local repository and clone it again. I'm not sure what happens with GitHub forks, but worst case: You might have to delete your fork and make a new fork. Sorry for the inconvience, I'll be more careful next time I'm going back to the future on the Git repository.

There's only a couple of open issues for a first Alpha release, but as we all know... it's just a dream list. :) Maybe I'm afraid of saying "it's finished", but I don't consider an official release (even if it's just alpha) to be important at this point, as long as development is moving forward.

I had some big changes to the code structure in mind, for a while now, and I just want to get them out of the way first. So, I've starting making new plans for CivOne. Here's my list of my current focus, before I start working towards the first Alpha version again:
  • Rewrite/Restructure player logic (currently working on this in the player-objects branch):
    • Move game logic from the player to the game/tasks
    • Seperate the human player code from computer player code (actually HumanPlayer, ComputerPlayer and BarbarianPlayer)
    • Integrate AI code into the ComputerPlayer and BarbarianPlayer code
    • Generally improve AI logic to be more similar to the original game
    • Make preperations to the code to allow creating custom AI plugins
  • Improve gameplay/gamedata logic:
    • Make game actions more event based
    • Move more game actions to tasks
    • Improve readability and add comments to clarify difficult situations
    • Seperate game logic from drawing/user interaction/screen code
  • Better native OS integration
    • Remember last window startup position
    • Confirm quit dialog when (accidentally) closing the window (optional)
    • Windows:
      • Use more modern Select Folder dialog on Windows
      • Prepare Microsoft Store version of CivOne (the non-Microsoft Store version will always be available for download)
    • Linux:
      • Use latest GTK+3 libraries
      • Create Mono-based version of CivOne that is able to run on 32-bit versions of Linux
      • Research distribution possibilities (debian, rpm, snap, flatpak, etc)
    • macOS:
      • Use native macOS dialogs (instead of current patched together AppleScript solution)
      • Create Mono-based version of CivOne that is able to run on older versions of MacOS X/macOS
      • Research possibilities of macOS menu bar integration
      • Support Command+Q shortcut to quit CivOne
    • Android/iOS:
      • Research the possibility of have the game run on these platforms
  • Centralize game text references (low priority):
    • All game texts/labels should come from a central place
    • All game texts that are currently loaded from the original game data should have an alternative (free) text
    • Allow game text translations
  • Plugin API:
    • Finalize plugin API for the first alpha version
    • Create proper documentation and sample plugins
    • Provide tools to help develop plugins
  • Website:
    • Improve all the content on the website
    • Remove focus from the news on the website, because it's not updated often
    • Enable automatic nightly builds on the website
    • Make the website available in languages other than English
    • Add interactive features to the website:
      • User accounts
      • Plugin database
      • Translation contribution (for both the website and the game)
      • User reactions to (news) items
      • Discussion forum
    • Probably add an entirely optional and non-intrusive request for donations to keep the website/build server running:
      • I don't want to monetize CivOne in any way (I only want to cover the costs)
      • I don't want to add any kind of tracking/advertising to the website
      • Donation is completely optional and I will not nag people about not paying
      • The website and domain name are currenly paid by me
      • I want to pay for software code signing certificates, so that people don't get warnings that the code is from an unknown source
    • Once the updated website is up, I will probably start asking for help to keep the website up-to-date and moderated
  • GitHub:
    • Re-organize issue list (for better collaboration)
    • Write a proper documentation/readme
From September on, I will have more time to focus on CivOne.
Please, if you have any ideas or comments on the above, let me know. :goodjob:
 
Pity about the private e-mail address and rewriting of history! I don't have a GitHub solution to that, although on BitBucket I use aliases (https://confluence.atlassian.com/bitbucket/set-email-aliases-792298714.html), and checking the history of a repo locally on Mercurial, I indeed see the alias, not the e-mail address, from the commits - except the ones I haven't mapped to aliases yet. I don't know what secret sauce they use, and it may well be rewriting behind the scenes, but they have a nice UI fixing that sort of situation on their site.

I like the list, it's ambitious. A few questions/comments.

- I'm curious how you handle layers. In my Civ3 editor, I also have layers separated - but I draw on a per-tile basis. So I'll draw the base layer of tile 1, then the forest layer of tile 1, then the hills, then the cities, then the units, etc. Then do the same on tile 2. If the user has hills not drawn, then it's still one tile at a time, but the hills step is skipped. I could see an alternative, however, of drawing all the base layers, then all the forests, then all the hills, etc. Not sure if it would really matter from a performance/features standpoint.
- I like your restructuring thoughts, separating human/computer/gameplay mechanic/barbarians. I'm curious how an AI plugin would work - would there be stages and hooks that a plugin could interoperate with? This is an area I don't know much about.
- Which Select Folder dialog is used currently? It's amazing how many there are on Windows. My personal least-favorite is the folder tree without an option to paste in the path; so many clicks of the expand folder button. I'd probably take the Windows 3.1 two-pane style over that one; at least it works well with double clicks. But other than the tree one, anything from XP's default (five favorites on the left, "normal" right pane) works decently well.
- Do all the platforms use GTK for the graphics? I can't remember which toolkit you chose for them.
- Text references are a pain point in my editor, in part because I didn't bother with making things translatable for so long that I have what seems like a million strings. The other hazard is that my French is no longer good enough to do much of it myself, and the lack of volunteers and most things being hard-coded strings has created a chicken-or-the-egg problem. So I'd recommend tackling it before too long, and ideally having at least one translation, so the size of the problem isn't prohibitive later on. Kind of like supporting multiple CPU architectures - if a program only supports MIPS, it has no PowerPC version, and it's both hard to gain PowerPC users without support, and hard to commit the resources to support PowerPC without already having the users. But it's English and French instead of MIPS and PowerPC.
- I like the website focus moving away from news, and the ideas to it (notably plugin database and translation contribution) are good. But they seem a little bit ahead of the game, and in past experience, off-CFC discussion forums usually struggle to garner enough new users (such as WePlayCiv, SOC [which no longer exists], there's probably a couple others I'm forgetting). Long-term, CivOne may become complete enough to avoid that problem, but I wouldn't put too much emphasis on that early, and would definitely keep updating this thread.

Okay, maybe that was a large value of "a few". But even though my intro to the series was Civ3, I'm definitely still following this thread and hoping to see it succeed!
 
Back
Top Bottom