Thyme, a Generals ZH reimplementation project. |
Thyme, a Generals ZH reimplementation project. |
13 May 2017, 23:51
Post
#51
|
|
Certified Shitposter Group: Tester Posts: 2410 Joined: 30 December 2013 From: Straya' Member No.: 10248 pls join my games im lonely =c |
before the discussions continues to all the new modding parameters, i would just like to say great work on windowed borderless mate
not being able to alt tab in full screen is hell on windows 10 -------------------- 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. |
|
|
13 May 2017, 23:56
Post
#52
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
I think the only issue with using a borderless window in place of full screen is that mouse scroll won't work, though that might be fixable down the line when I look at the event handler.
|
|
|
15 May 2017, 11:58
Post
#53
|
|
Group: Members Posts: 83 Joined: 1 April 2017 Member No.: 14916 |
So I chance upon this thread... and read it to the last page so far. Result: My head hurts. I have no background in coding whatsoever, nor can I understand much. It reminds me of when my family discusses genetics and microbiology at the dinner table
My only hope is that this will come with some sort of readme file I can attempt to use as a guide when it finishes Anyways, best of luck |
|
|
27 May 2017, 17:38
Post
#54
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
QUOTE 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. I'll look into it. -------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
6 Jul 2017, 10:49
Post
#55
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
A little update for those who don't obsessively click refresh on the github page. Filesystem handling is pretty much done, as is string file handling. Most of the guts of the INI parsing system are done, specific functions for parsing into specific types of file are being implemented as the classes they feed are.
The layouts for classes that get allocated during the game engines initialisation are slowly being worked out, right now I'm looking at the audio engine which is huge. Currently it links against something called Miles Sound System which is a commercial sound library but I'll want to implement an alternative around OpenAL instead since I can't use Miles in an open project. There are several useful things that i could implement currently. I've already started adding debug logs for errors that occur when reading ini files, but even what I've added so far can be improved by logging file names and line numbers. I could also alter the way that .str files are treated so they could be utf-8 formatted rather than just plain ascii which the currently are. That way if you include extra strings with a map, you could use foreign symbols in it. Largely I'm still just trying to focus on reimplementing logic rather than adding many improvements just yet though. I've also started to think about the possibility of building the incomplete stand alone binary so that its easier down the line to switch without a big refactor and to test cross platform building of the project to see where alternative functions need using/writing. |
|
|
6 Jul 2017, 11:41
Post
#56
|
|
Gamer Girl Group: Legend Posts: 3808 Joined: 19 June 2009 From: Disboard Member No.: 182 Friendly Freelancer |
All of this sounds pretty amazing. I sadly can't help with any of this, but I can at least cheer for you.
|
|
|
6 Jul 2017, 11:44
Post
#57
|
|
Certified Shitposter Group: Tester Posts: 2410 Joined: 30 December 2013 From: Straya' Member No.: 10248 pls join my games im lonely =c |
For your efforts so far alone you should be awarded the legend tag on the forums.
Seriously Blade, if this keeps up this is going to be an amazingly rewarding project for all of us. -------------------- 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. |
|
|
19 Jul 2017, 10:15
Post
#58
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
I've made the github wiki functionality available at https://github.com/TheAssemblyArmada/Thyme/wiki. Its a bit bare bones for the time being, but if anyone wants to contribute anything to it, I've made the wiki publicly editable. I'll be adding useful information to it as I uncover it in the engine.
|
|
|
27 Aug 2017, 3:46
Post
#59
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
Any progress ?
-------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
31 Aug 2017, 15:09
Post
#60
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Any progress ? Just mapped more of the audio engine and wrote skeletons of more of the classes involved. Progress has been a bit slower of late due to real life commitments and me trying to port some of the work done on redalert++ to a similar dll injection project to try and make it easier to get that project past a few road blocks it's hit, though no source release for that yet as I'd need to get other people involved in that to sign off on it. |
|
|
3 Sep 2017, 13:45
Post
#61
|
|
Group: Members Posts: 46 Joined: 18 June 2015 From: Shanghai,China Member No.: 11608 |
It is just GREAT to see the birth of this GREAT project! Thank you! It is just so great to see that a new possibility (even a new era) of this beloved game!
Here're some humble idea about the possible feature of the project. (a) Fix 128 Upgrade Bug: Currently ZH will go crash if the number of upgrade items in Upgrade.ini exceeds 128, known as the 128-upgrade bug. ( Multi-turret Logic: Currently ZH support only 2 turret on any single object, while CNC3 & RA3 support unlimited number of turret on any object. © Enhanced Support Fire Logic: Currently ZH support fire logic (like the one on Patriot Missile Battery) only works when the attacker and supporter are the exact same type of unit. Maybe extend this to something like CNC3 beam cannon/Venom/Obelisk logic? (d) Teleporting Logic: Currently it's impossible to teleport units in ZH. Logic similar to Mastermind (CNC3 Scrin) or Firehawk(CNC3 GDI) would be an potent feature. (e) Extendable Damage Types. (f) W3D export/import plugin for 3ds max 9 or later: Currently the W3D import/export plugin works only for 3ds max 7/8, which have obviously become obsolete and 3ds max 7/8 are having problems running on Win10 now. (g) Worldbuilder Support. Thank you! |
|
|
3 Sep 2017, 16:45
Post
#62
|
|
Group: Dev. Team Posts: 1242 Joined: 26 July 2014 Member No.: 10559 |
The importer/exporter are not related to the game engine. If you want them to work with Max9 or above, You gotta find someone to recreate the plugins.
|
|
|
4 Sep 2017, 13:04
Post
#63
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
It is just GREAT to see the birth of this GREAT project! Thank you! It is just so great to see that a new possibility (even a new era) of this beloved game! Here're some humble idea about the possible feature of the project. (a) Fix 128 Upgrade Bug: Currently ZH will go crash if the number of upgrade items in Upgrade.ini exceeds 128, known as the 128-upgrade bug. ( Multi-turret Logic: Currently ZH support only 2 turret on any single object, while CNC3 & RA3 support unlimited number of turret on any object. © Enhanced Support Fire Logic: Currently ZH support fire logic (like the one on Patriot Missile Battery) only works when the attacker and supporter are the exact same type of unit. Maybe extend this to something like CNC3 beam cannon/Venom/Obelisk logic? (d) Teleporting Logic: Currently it's impossible to teleport units in ZH. Logic similar to Mastermind (CNC3 Scrin) or Firehawk(CNC3 GDI) would be an potent feature. (e) Extendable Damage Types. (f) W3D export/import plugin for 3ds max 9 or later: Currently the W3D import/export plugin works only for 3ds max 7/8, which have obviously become obsolete and 3ds max 7/8 are having problems running on Win10 now. (g) Worldbuilder Support. Thank you! The upgrade limit is almost certainly due to a bitfield object being involved. The size of those are set at compile time, and it is trivially easy to change the actual number involved, but that can change the size and layout of data in memory, so depending on how many bits of code refer specifically to the bitfield, it may require a lot of the game to be reimplemented before it can be changed as we can't change the size and layout of things that we still need to share access to with the original code. The other logic changes should be possible, but until we have a more complete reimplementation its hard to say how much work they will be to implement. As M.P. says, the plugins are mostly their own thing. They do share some code with the games relating to w3d handling, but thyme will only give bits required to reimplement them, not everything. I'd personally rather throw support behind https://github.com/sage-team/W3D-Tools to get similar import/export tools available for the open source Blender 3d modelling software as that is freely available. Finally, what do you mean by worldbuilder support? |
|
|
4 Sep 2017, 15:36
Post
#64
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Just an update on the upgrade limit, it does indeed use a bit field, the debug symbols show an object called "Bitfield<128>" being passed around between a number of upgrade related functions. It looks like this may be part of larger structures, so it will be changeable quite easily, but probably not very soon because it needs a bunch of other stuff in place first.
|
|
|
6 Sep 2017, 9:18
Post
#65
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
Things are looking very promising.
-------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
7 Sep 2017, 13:32
Post
#66
|
|
Group: Dev. Team Posts: 964 Joined: 15 August 2013 From: Portugal, Lisbon Member No.: 10072 |
I wonder if you could check out why the game only uses a specific amount of ram/CPU even if the game is running in a very good computer... And if that is possible to change with your project.
|
|
|
7 Sep 2017, 13:39
Post
#67
|
|
Group: Moderator Posts: 1641 Joined: 8 January 2015 From: Newcastle, England Member No.: 10811 Aut vincere aut mori, Cave quid dicis, quando, et cui, De duobus malis, minus est semper eligendum. |
one thing i noticed a cupple of weeks ago which im wondering if you could change.
when a unit or structure is constructed for the first time in a match theres an fps drop for a few seconds meaning its the game loading the "data" for said unit/structure into the memory for future instances of it in the match from the ini files. It will increase the initial load time for the game but could it be done to load all of the data into the memory on start up rather than on the fly during a match to improve performance, though the engines memory could probably do with an increase aswell. it would help explain why the game slows down so much in the later stages of a match due to the memory clogging up. -------------------- |
|
|
8 Sep 2017, 10:20
Post
#68
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
one thing i noticed a cupple of weeks ago which im wondering if you could change. when a unit or structure is constructed for the first time in a match theres an fps drop for a few seconds meaning its the game loading the "data" for said unit/structure into the memory for future instances of it in the match from the ini files. It will increase the initial load time for the game but could it be done to load all of the data into the memory on start up rather than on the fly during a match to improve performance, though the engines memory could probably do with an increase aswell. it would help explain why the game slows down so much in the later stages of a match due to the memory clogging up. Its possible that the game is lazy loading the assets it needs and caching them, I've not noticed it myself. Does it affect both skirmish and online play? More code will need reimplementing before we can look at identifying the cause of it anyhow as game logic hasn't really been reached yet. Regarding the game slowing down, again is this online, offline or both? The more units there are, then the longer it will take to iterate over all of them and do whatever their logic is for each tick, I suspect you perceive this as slowdown as I think the frame rate is linked to the logic tick rate, so anything slowing the ticks slows the frame rate. It would probably take large restructures of the engine to fix that. Such an endeavour would have to wait until practically everything is reimplemented I would imagine. |
|
|
8 Sep 2017, 14:34
Post
#69
|
|
Group: Moderator Posts: 1641 Joined: 8 January 2015 From: Newcastle, England Member No.: 10811 Aut vincere aut mori, Cave quid dicis, quando, et cui, De duobus malis, minus est semper eligendum. |
skirmish and online,
for eg: building a usa powerplant placeing the very first scaffold on the map for the plant causes a 2fps drop for a second or 2, with a further 2 fps drop for a second once the construction is done and the scaffold goes. following usa powerplants dont. the fps drop happens for every structure and unit for the very first time its placed. weirdly avengers cause 5fps. the slowdows do come from several areas. connections (player side) amount of units on the field amount of players in the match map size has a low impact Weather effects are horrendous on performance, regardless of the players cpu, gpu, ram, graphics settings. (they do need an overhaul on performance but are hard coded to the engine) Length of the match ( 1 hour is average the longest a match can go b4 the game nopes out) the game engine only uses 1 cpu core. -------------------- |
|
|
13 Sep 2017, 11:52
Post
#70
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
skirmish and online, for eg: building a usa powerplant placeing the very first scaffold on the map for the plant causes a 2fps drop for a second or 2, with a further 2 fps drop for a second once the construction is done and the scaffold goes. following usa powerplants dont. the fps drop happens for every structure and unit for the very first time its placed. weirdly avengers cause 5fps. the slowdows do come from several areas. connections (player side) amount of units on the field amount of players in the match map size has a low impact Weather effects are horrendous on performance, regardless of the players cpu, gpu, ram, graphics settings. (they do need an overhaul on performance but are hard coded to the engine) Length of the match ( 1 hour is average the longest a match can go b4 the game nopes out) the game engine only uses 1 cpu core. Yeah, that does sound like a lazy load, once we get to the asset loading code it may be possible to have more of the assets loaded up front or push the loading into a background thread on the idea that it will finish loading before the player actually needs it. I'm surprised that player count has much of an impact other than there generally being more units when there are more players. Weather effects I'll bet are being done largely on the CPU from the impact you describe, again once we control the code for them we can look at options for improving it such as having the GPU do more of the work if it isn't already the case. Does anyone know if any/all of these issues affect the macOS port in the same way? I realise testing multiplayer on it is no longer possible, but a general idea of the state would be useful. |
|
|
21 Nov 2017, 1:05
Post
#71
|
|
AI Coding Expert Group: Dev. Team Posts: 1846 Joined: 9 May 2014 From: Poland Member No.: 10450 |
Any progress so far , Blade?
-------------------- Not a Rusty Spoon........The_Hunter uses a goddamn wooden spoon on his AI Scripters.... |
|
|
21 Nov 2017, 22:30
Post
#72
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
I've been mapping out all the classes related to the SidesList class, mostly classes from the scripting engine. I've got skeletons of them all implemented, I just need to test the various functions I've implemented before I push it to the main repo. That should be enough to initialise the SidesList global object in the game engines Init function and brings me one step closer to owning the game initialisation code.
|
|
|
21 Nov 2017, 23:56
Post
#73
|
|
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 |
I love how I read that like four five times, each time I read it I understand it but then I think afterwards.
"What did he just say?" You sir should try politics Also I had this question forwarded to me by the middle eastern crowd when I mentioned how awsome this project is; Do you accept donations? Or how can a common man who's as clueless as me contribute? Should we try to hire some other programmers? -------------------- |
|
|
22 Nov 2017, 10:59
Post
#74
|
|
Group: Members Posts: 39 Joined: 11 January 2017 Member No.: 14208 |
Ha ha, so SidesList is an object in the game that appears to handle lists of data pertaining to the sides in play on a map as far as I can tell. When I say I have skeletons implemented, I mean I have in C++ objects that should match the data layout of the same thing in the compiled game (so my code will behave the same as the existing code when it has to work on such an object). However I don't have all the code that does stuff with that data implemented.
Game engine initialisation is all the code the game goes through to get ready to do stuff, its the stuff it does while the initial loading screen with the progress bar at the bottom displays. Loads of one time stuff to do things like process the big files and load the ini data. Regarding donations, I absolutely cannot accept them as I believe it would put the project on shakier legal ground than it already is and more likely to draw the ire of EA which we definitely don't want. In terms of programmers, they would need to have some familiarity with IDA or a similar tool to map out and understand the original binary and C/C++ knowledge to be able to write re-implementations of the games functions that behave similarly enough that the game doesn't notice we swapped them out. There are some parts that could be done that don't need any further knowledge of the binary such as implementing an alternative audio engine which should be possible on top of what I've already implemented. They just need a C++ programmer with knowledge of something like OpenAL and maybe some hints from me as to how the original Miles audio class worked. None programming wise, if I have questions related to how the game behaves when certain things are set or changed then people who are familiar with making mods that use the code I'm trying to understand could be a great help. You could also grab the binaries that come out of the appveyor build service and run them and see if the game behaves as it should and if not report bugs that I've introduced. You would need the game.dat from an English CD release patched to 1.04 though as Thyme is written against that specific version and won't run correctly with any other game.dat. |
|
|
14 Jan 2018, 20:04
Post
#75
|
|
Tactically Toxic Group: Members Posts: 248 Joined: 29 February 2016 Member No.: 12634 |
any new news?
|
|
|
Lo-Fi Version | Time is now: 26 April 2024 - 15:17 |