Hi,
I'm seeing that most of the recent commits have the purpose of (correctly) separating the all-together code in more specific areas, like UI, game logic etc..
I was wondering, what is the objective at the end of that? What are, in your opinion, @bvschaik the things this project needs and the ultimate goal you are willing to achieve? How far are we from that?
Final goal, imho, restore workable implementation of original :)
Ok good, but how far are we from that? It appears to me that in terms of functionalities we are almost there (tried to play a mission I previously played in the original game and got almost the same playing experience).
Maybe to do bigger steps we should have a bigger community, which I think cannot be developed without proper documentation of the project and of the code.
Furthermore the code may be "workable" but it is far from "clean"... It is a big bunch of if/else and switch/case branches, which not only it doesn't really abstract the behavior, but it doesn't have a single line of comment explaining why things are done in a specific way.
Repoowner workout for this project over 7 years, as I mind correct. @bvschaik
And that's indeed an incredible work, I did not want, in any way, say that's bad (sorry, English is not my primary language). What I just wanted to make clear is that maybe with some clarification of the objectives, we can also give better help, that's all 馃槃
Seems to be need goto to other lang c++(imho) or script with c++, but in plainc it really hard to update.
A bit of history for this project: it started in 2008 when I learned to read assembly and slowly discovered how the game worked. Around 2011 I started on a remake of Caesar 3, and after a few false starts I created this repository. At first I focused on recreating the original functions and grouping them in files, the past half year or so I've been separating UI and logic, separating the records in the .sav files from their representation in memory, abstracting away global variables, and (hopefully) improving the code.
It's in C because the original was in C. It has many switch and if/else statements because that's what the original has. I agree that it's not the most beautiful codebase you will ever see, but considering where it came from, it's way better already. Do I want to migrate to C++? Maybe, but Julius has been eating up too much time already and I'm not too familiar with C++.
The original goal was, as @dalerank mentions, to have a working copy of Caesar 3, an exact copy gameplay-wise, but with UI improvements such as widescreen support and support for multiple operating systems. Apart from any bugs that I undoubtedly have introduced, this goal is almost reached, after I migrate the last bits of 'old' code.
Then, things that still have to be done on the short term:
For the long term, I don't have any concrete plans, but integrating the scenario editor might be a nice one.
The work you have done, alone, is really impressive and that's why I wanted to learn more about it in the first place.
I would like to fix a few bugs as well, just like OpenRCT2 does.
Also, I believe that a few additions could be made. @bvschaik, would you agree that for instance I add roadblocks to the game once the refactoring is finished? They were added in all the next Sierra games, and I think that not having them (and using gatehouses as an ersatz) is a significant gameplay hurdle.
Which bugs do you think that should be fixed? Besides the 100-year-old ghosts there aren't any major gameplay bugs that I can remember.
I want to keep Julius close to the original gameplay wise, and the .sav files fully compatible with Caesar 3. That means that introducing roadblocks is out of the question. Maybe we should create an enhanced edition of Julius? With increased building/figure/route limits, editable empire maps for new scenarios?
Hey, I鈥檇 like to jump aboard and help the tiny amount I can manage. I鈥檒l create a PR with my Flatpak manifest once it鈥檚 done.
Seems to be need goto to other lang c++(imho) or script with c++, but in plainc it really hard to update.
May I suggest Rust instead? It has many benefits over C/C++ and wouldn鈥檛 require a complete rewrite, since the C and Rust parts can coexist as if the project was in one language.
BTW @dalerank what鈥檚 the relationship between this and Caesaria (and you)? Is Caesaria dead, or obsoleted by this?
To write down what I think: Keep the spirit of the original game in while providing modern OpenGL features under the hood, like other famous clones do. Maybe one day, start with an enhanced edition, still allowing to "import" C3 save games (but no export to C3, of course) but having more improvements/additions.
Only a few thoughts (long-term goals?):
1) Missing features that people ask to be added (and makes sense, no space port is making sense here)
2) HD textures (only optional, spirit is maybe lost when you use them).
3) Refacturing the engine (get rid of re-implemented bugs, making it more modular/plug-able) like the clone of WarZone2010 does
4) Addon system to allow people adding/replacing content (again WZ2010 does this)
Most helpful comment
Hey, I鈥檇 like to jump aboard and help the tiny amount I can manage. I鈥檒l create a PR with my Flatpak manifest once it鈥檚 done.
May I suggest Rust instead? It has many benefits over C/C++ and wouldn鈥檛 require a complete rewrite, since the C and Rust parts can coexist as if the project was in one language.
BTW @dalerank what鈥檚 the relationship between this and Caesaria (and you)? Is Caesaria dead, or obsoleted by this?