Thyme, a Generals ZH reimplementation project. |
Thyme, a Generals ZH reimplementation project. |
28 Jan 2017, 17:34
Post
#26
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Stalker, yeah that is right, currently the thyme code calls the existing code where functions aren't yet reimplemented. Currently that is most of them, but as more and more functions are done, less will be called from the original until none are and thyme can run on its own. Currently I'm working on the file system handling so loading big files and such and the abstraction needed to open from it or the normal file system.
Bruce, unless rotr uses a hacked exe already with some custom functions, it should work as is when thyme is complete. I hope to be able to have it load original generals content as well if provided with generals game files instead of zh files, but I'm not sure what differences in the engines exactly I'll need to account for. |
|
|
18 Feb 2017, 9:58
Post
#27
|
|
Particle effects since 2004' Group: Members Posts: 118 Joined: 7 March 2012 Member No.: 9029 |
It's really inspiring seeing you do this kind of thing despite generals age :v (I thought I'm one of the few guys stuck in the nostalgia zone doing stuff with generals).
I'd gladly help however I'm pretty much java programmer at this point and this actually allows me to appreciate your work even better seeing how java is a piece of cake compared to C and C++. How did you start all of this? (Technically speaking, was it trial and error or did you find some technical documentation about the internal engine shenanigans?) -------------------- Woo Particle effects!
|
|
|
18 Feb 2017, 16:11
Post
#28
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
One of the guys I was working on RA++ with was checking all C&C related files and binaries to try and find left over bits of debug information and came across files that contained more or less complete sets of function symbol information for Generals and Zero Hour. Its only with that that it became feasible enough for me to try and map the windows exe to start one of these "bit at a time" re-implementation projects. Drop in on the dev chat on freenode, channel #thyme if you want to chat about it in more detail.
|
|
|
19 Feb 2017, 15:09
Post
#29
|
|
Group: Members Posts: 202 Joined: 10 September 2016 From: Malaysia Member No.: 13185 |
How about smart units? Would that be possible?
There are a lot of things that can be improved upon in this game but that's the only stuff i can think of so far. This post has been edited by Jet02: 19 Feb 2017, 15:23 |
|
|
2 Mar 2017, 14:53
Post
#30
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Made an interesting discovery, it seems that the game was written against STLPort rather than the standard c++ library that comes with MSVC and we think we've identified the version they used so with a bit of massaging to get it compiling, we have an ABI compatible C++ library implementation making it much easier to implement and test functions one at a time, even those that rely on STL containers which we didn't think we could touch until later.
|
|
|
2 Mar 2017, 18:23
Post
#31
|
|
The Forums American Hotshot Flyboy Group: Tester Posts: 2859 Joined: 22 November 2012 From: The foundation of modern freedom and Liberty;United States of America. Member No.: 9500 |
No offence ment but what does this mean? x) This post has been edited by (USA)Bruce: 2 Mar 2017, 18:23 -------------------- |
|
|
2 Mar 2017, 20:52
Post
#32
|
|
Particle effects since 2004' Group: Members Posts: 118 Joined: 7 March 2012 Member No.: 9029 |
--image snip-- No offence ment but what does this mean? x) I'm sorry man I just had to. As for what it means - it means that their life just got easier. -------------------- Woo Particle effects!
|
|
|
2 Mar 2017, 22:18
Post
#33
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Part of the standard C++ is a library of data structures and algorithms such as std::vector or std::map, the behaviour of which is mandated by a standard. However the underlying implementation isn't defined so different compilers implement them differently. The implementation even changes between compiler versions. Provided your program is self contained and doesn't try and pass these data structures between dll's or anything the fact that the implementation can change over time doesn't matter though because the version your program uses is set in stone when you compile it.
However when you are trying to hook into an older existing binary where some functions do pass them around and some of the data structures contain them, the differences basically mean things don't line up correctly when you try and re-implement them so functions that theoretically would match the original in behaviour don't match at a binary level, you need to use the same implementation as the original. Part of the reimplementation is working out the layout of the data structures for things like the INI file parser and the big file loader so they can interoperate with the original code and having the correct C++ implementation makes that much easier. |
|
|
13 Mar 2017, 9:08
Post
#34
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
I've just about finished reimplementing the functions for initialising the big files. I understand that the -mod command can't override everything in the big files, possibly because it loads mod files somewhat later in the process after already loading some things from the default. Would a new "-root /path/to/stuff" type command line parameter that sets the games whole working directory to somewhere other than the games install directory be useful? Currently the game loads all bigs from the ZH binary directory, then the Generals install directory, then a little further into the init process, it loads the big files in the directory specified by -mod. I could change that to load from the specified root directory, then the ZH install directory, then the Generals install directory then finally the -mod directory.
|
|
|
13 Mar 2017, 16:21
Post
#35
|
|
The X General Group: Project Leader Posts: 2166 Joined: 7 June 2009 From: Philippines Member No.: 73 Uniqueness is Overrated |
Would a new "-root /path/to/stuff" type command line parameter that sets the games whole working directory to somewhere other than the games install directory be useful? You can actually write the full directory of the mod big file to load a mod from outside the default directory. The bigger problem is that the -mod function only works for a single .big file at a time. Most mods these days use multiple .big files, because it is more stable and easier to update. -------------------- |
|
|
13 Mar 2017, 16:27
Post
#36
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
If you provide -mod with a directory path and not a single .big file name, the code for it suggests it will load all the big files from that directory, not just one. However my understanding was that this can't override some things.
|
|
|
13 Mar 2017, 17:38
Post
#37
|
|
The X General Group: Project Leader Posts: 2166 Joined: 7 June 2009 From: Philippines Member No.: 73 Uniqueness is Overrated |
If you provide -mod with a directory path and not a single .big file name, the code for it suggests it will load all the big files from that directory, not just one. However my understanding was that this can't override some things. I remember someone mentioning that as well, though I never really got around to testing it. Well if you can make it so that whatever is in -mod will always get loaded last, then that would be helpful. -------------------- |
|
|
28 Mar 2017, 13:15
Post
#38
|
|
Group: Members Posts: 202 Joined: 10 September 2016 From: Malaysia Member No.: 13185 |
How about if you give units a slightly higher degree of intelligence/autonomity? Not to the point that it becomes an entirely different game, just enough to make battles look less like those of the 18th century.
Also are cover mechanics possible? |
|
|
20 Apr 2017, 0:59
Post
#39
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
Wow wow slow down jet. From what I understand (basically fuck'all) Blade is still far off from getting thyme to initialize the whole game on its own, let alone adding new functions.
Blade, how's your progress so far? -------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
20 Apr 2017, 1:56
Post
#40
|
|
The Forums American Hotshot Flyboy Group: Tester Posts: 2859 Joined: 22 November 2012 From: The foundation of modern freedom and Liberty;United States of America. Member No.: 9500 |
^Unrelated; Can you please upload an avatar image or something blade...When you can ofc
-------------------- |
|
|
6 May 2017, 21:56
Post
#41
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Avatar image done. So I'm currently working on a class called Xfer which seems to be related to saving and loading data, but it needs functions from other classes so I'm implementing parts of those classes sufficient to provide what I need and provide a skeleton for the rest.
Of features I can probably currently add, I can add pretty much anything to how the file system behaves and new command line options that affect things I've currently got mapped in the exe. For example I'm thinking of porting the windowed mode position command line parameters that are available in at least the Rise of the Witch King. Currently I believe windowed mode just draws itself where ever but in ROTWK and probably the other BFME games, you can specify the X and Y for the initial position. Not an amazingly useful feature, but I'm sure it would have some use for people running windowed mode. |
|
|
7 May 2017, 0:16
Post
#42
|
|
Certified Shitposter Group: Tester Posts: 2410 Joined: 30 December 2013 From: Straya' Member No.: 10248 pls join my games im lonely =c |
is a windowed borderless option possible with these developments?
-------------------- Many thanks to IvanMRM for my avatar and Star for drawing my epic signature. You guys rock! Join our Discord Server for a great community and plenty of games and memes! Also, check out our ROTR - Fan group on Facebook. |
|
|
7 May 2017, 15:42
Post
#43
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
I've just had a quick check playing with the window style options and it seems that yes, it would be possible to have no title bar or border. Would be pretty easy to work those in as command line options.
|
|
|
9 May 2017, 14:10
Post
#44
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
And indeed I have now added -noBorder as a command line option when running thyme in addition to the -win options to get a borderless window. -xPos and -yPos control where it is positioned on screen.
|
|
|
12 May 2017, 18:25
Post
#45
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
Nice job Blade! Keep up the good work. If this works out till the end, you shall be granted the title of "Jesus of Zerohour"
-------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
13 May 2017, 5:00
Post
#46
|
|
The X General Group: Project Leader Posts: 2166 Joined: 7 June 2009 From: Philippines Member No.: 73 Uniqueness is Overrated |
In terms of new features, the most needed ones would be:
- Removal/Increase of upgrade limit - Ability to add new Special Power Enums - Ability to add new Special Power Decals - Ability to add new Damage Types - Ability to use multiple Overlord Contain objects per unit - Enable overlord contain objects to use FireWeaponUpdate -------------------- |
|
|
13 May 2017, 13:01
Post
#47
|
|
Gamer Girl Group: Legend Posts: 3808 Joined: 19 June 2009 From: Disboard Member No.: 182 Friendly Freelancer |
More bike logic drivers as well (currently it's 8).
|
|
|
13 May 2017, 13:52
Post
#48
|
|
Group: Dev. Team Posts: 964 Joined: 15 August 2013 From: Portugal, Lisbon Member No.: 10072 |
I wonder how much of a trouble would be to introduce more scripts conditions and actions.
This post has been edited by Oliver: 13 May 2017, 14:17 |
|
|
13 May 2017, 17:00
Post
#49
|
|
Group: Members Posts: 22 Joined: 5 June 2016 From: Murica Member No.: 12935 |
I wonder how much of a trouble would be to introduce more scripts conditions and actions. Getting most of the Unused scripts working would be a nice start. There's a lot of ones there that don't do anything sadly, and they would be useful. -------------------- Shockwave "Good" Balance Mod:
ModDB Page Latest date: October 3rd, 2017 Update 15 includes a life worth living. |
|
|
13 May 2017, 22:57
Post
#50
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Are the unused scripts unused just in ZH or in both ZH and Generals? One of my stretch goals is to make Generals vanilla data files load unmodified in thyme as well, so if script actions need restoring from it, that is one of the things that will happen. Scripts that are totally unused possibly don't have any code behind them so it would be up to us to implement something appropriate.
A lot of the limits look like they come from a templated bitfield class where the range of possible values is set at compile time. Unfortunately, the code that checks them probably also has the range hard coded. Once the code is reimplemented, it should just be a matter of increasing one number, but reimplementing all the relevant code so that the number can be raised will take time. |
|
|
Lo-Fi Version | Time is now: 20 April 2024 - 4:14 |