jonwil
Staff Moderators-
Posts
1,358 -
Joined
-
Last visited
-
Days Won
25 -
Donations
0.00 USD
jonwil last won the day on March 26 2023
jonwil had the most liked content!
Reputation
151 ExcellentAbout jonwil
Member Title
- Scripts and Engine Lead Coder
Profile Information
-
Gender
Male
Contact Methods
-
Skype
jfwfreo
-
Westwood 3D and S.A.G.E. Engine Source Code Modernization
jonwil replied to Pedeca's topic in Command & Conquer
FFMPEG is good for Renegade/Generals because it can support both Bink (to play the existing videos) and open formats (best option IMO is VP9). For DirectX, I can 100% tell you that Renegade, Generals, Zero Hour and Earth & Beyond all use Direct3D 8 ONLY. BFME, BFME 2, TW, KW, RA3, Uprising and TT ALL use Direct3D 9 ONLY. I can tell by looking at the main game exe files, the main game exe files for the earlier games link to D3D8.dll only and not D3D9.dll and the main game exe files for the later games link to D3D9.dll only and not D3D10.dll or anything later. There is nothing in the source code for Generals or Zero Hour that points to Direct3D 9. I know what HLSL is and I can tell you now 100% that nothing in Generals or Zero Hour uses HLSL, its all done using fixed function stuff or shader assembly.The later games starting with TW make extensive use of HLSL though and any modernized engine running on newer Direct3D versions should absolutely do so as well. As for 3D formats, w3d does a lot of things. It can do meshes, it can do skeletons, it can do animations, it can do lights, it can do particle emitters, it can do dazzles, it can do sound render objects and more. And it is equally suited to doing all of those. If something doesn't need animations, it has no W3D_CHUNK_ANIMATION. If something doesn't need particle emitters, it has no W3D_CHUNK_EMITTER. And so on. The .ma files in the Renegade 2 model pack are just indications that the artists used Maya at some point during the process of making those objects before loading them into 3DS Max and exporting them to .w3d files. If you want to support a different format beyond .w3d in your "modern" version of these engines, go ahead (but it wont be easy) Best thing to do for the installer is to replace the whole thing with something like NSIS or if you really want to write something yourself, use LZMA (which is what 7Zip uses internally and is the best choice for compression if you don't need super-fast decompression) Go ahead and take any of what I wrote and put it in your post if you want. -
Westwood 3D and S.A.G.E. Engine Source Code Modernization
jonwil replied to Pedeca's topic in Command & Conquer
As someone who has been working with these engines for decades, I can tell you now that you do not need OpenGL in any way for these engines, nothing in the source release needs it. As for DirectX, both Renegade and Generals used DirectX 8, not DirectX 9. EA Started using DirectX 9 for the games with the first BFME game and then used DirectX 9 all the way through to Tiberian Twilight. But more specifically, going over the listed requirements in https://github.com/electronicarts/CnC_Renegade/blob/main/README.md and https://github.com/electronicarts/CnC_Generals_Zero_Hour/blob/main/README.md: The DirectX SDK that matches what was used back in the day for Renegade is this one https://archive.org/details/dx8sdk. For Generals, its this one https://archive.org/details/dx9sdk (although as mentioned, its still using DirectX 8, just using the slightly newer version of the DirectX 8 bits that come with the linked DirectX 9 SDK) And the windows header files that you need will come with the compiler so you don't need anything extra for those. (the stuff you linked to for DirectX and Windows headers is not what you need for Renegade or Generals). For Bink, the best way to replace it would be to replace the Bink SDK with FFMPEG which is capable of decoding the Bink videos. You could then also add support for other video formats at the same time (webm/VP9 is a good choice for a modern video format and FFMPEG can decode that as well) For Miles, Asimp3 has nothing to do with that assimp thing you linked to. Its a thing for decoding MP3 files that is part of the Miles Sound System and is not required for actually working with Generals/ZH source code (its part of some leftover audio code from older games that isn't actually used by Generals/ZH). And for replacing it, FMOD is a good choice, as is OpenAL. NvDXTLib is used by the Renegade level editor to compress textures. Its not necessary if you are building the game itself. If you are building the level editor and don't want to mess with it, you can just remove the code that uses it and things will still work correctly except for the texture compression feature (which isn't essential). Or you can find something else that can do texture compression in the right formats and replace it that way. NVASM has nothing to do with HLSL and is used to assemble the shader files in Generals/ZH. You don't need it unless you want to modify the shader files. If you don't want to modify the shader files, you can just remove those references from the source code and things will still work just fine. Lightscape is a tool that was used to generate pre-baked lightmaps for the game and has nothing to do with the 3D data itself. There are other better ways to make such textures now. And you don't need the Lightscape bits at all unless you want to compile the lightscape tool. All the games (Earth & Beyond, Renegade, Generals, Zero Hour, BFME1, BFME2, Tiberium Wars, Kane's Wrath, Red Alert 3, Uprising and Tiberian Twilight) only ever used 3DS Max for building 3D models and all the games had a custom 3DS max plugin for that purpose. Gmax was supported by the Renegade mod SDK as a way to allow the community to make models for these games (since gmax was free). The engines themselves never read 3DS Max, Maya, Gmax or any other formats, only .w3d (or for the later games, .w3x). And there is no need to throw away .w3d or switch to any other 3d formats, if you can't or don't want to use 3DS Max or GMAX for making 3D models, there is a plugin out there you can use with Blender (which is 100% free) to make your .w3d files. I can't comment on nbench but I can say that modern telemetry almost certainly isn't necessary, these engines don't place anywhere near enough load on modern hardware (network, disk or otherwise) to make any real difference. As for STLPort, EASTL is probably the best option if you are working with more modern stuff and want to replace STLPort. (in fact based on leftover debug strings in the games I can confirm that Red Alert 3, Uprising and Tiberian Twilight all use EASTL in some form instead of the STLPort that the earlier games were using). EASTL is good because its designed specifically for use in games so its going to have performance and the things games need in mind. For Umbra, Westwood was planning to use it for Renegade at one point (hence the code for it in the codebase) but the game as shipped never used Umbra for anything and you don't need any Umbra bits to actually work with the source code. Its using its own occlusion culling logic that's specific to Renegade and you can't just drop in some other occlusion culling system (although there is definitely room to make the Renegade system better if you wanted to) GameSpy there are obviously options for that, I don't know what makes the most sense though. For GNU Regex, https://directory.fsf.org/wiki/Regex has the needed bits. SafeDisk SDK you can just rip out and be done with it. The .cab stuff is used in the installer specifically. https://web.archive.org/web/20040603061506/http://msdn.microsoft.com/library/en-us/dncabsdk/html/cabdl.asp has the right .cab SDK bits. Zlib was never used in Renegade and only used in Generals/ZH for some compression stuff. I don't think its actually necessary but since its still available and still usable, you can just drop it in. LZH-light is a leftover from an earlier game (NOX) and is not actually necessary (you could rip it all out and be fine) There are definitely solutions out there for replacing RTPatch including solutions that don't cost money. The "server stuff" that is using Java is only for the old Renegade ladder/game results server and you don't need that stuff anymore. As for math and physics, replacing them wholesale just isn't going to work and you are better off improving what's there. If you build these things with modern compilers and turn on the necessary compile options, they will automatically take advantage of SSE instructions without you needing to do anything (at least excluding the few bits that use inline assembler). And 3rd party libraries don't care if the thing using them is compiled with SSE or not. And updating the project to a newer version of Visual Studio isn't hard, Visual Studio has ways to convert them (although I don't know for sure how you do it these days). -
For TT 4.x you need VS 2012 or so because of compatibility reasons.
-
I have released a new version of the W3D and W3X export tools. These are now built to work with 3DS Max 2023 and contain various fixes. This pack contains: W3D Exporter for 3DS Max 2023 - New tools for Max 2023 to export W3D files W3X Exporter for 3DS Max 2023 - New tools for Max 2023 to export W3X files W3D Viewer - A model viewer for W3D files W3D Dump - A tool to open W3D files and see the contents The source code to to the W3D Exporter, W3X Exporter, wdump.exe and memorymanager.dll Read the readme.txt file for details of how to install the plugin and notes about how to use it. Please test this and please report any bugs to me so they can be fixed. If you have any questions, you can find me here, on the w3dhub discord, on the 3rd Age discord, the SAGE Engine Modding discord or various other C&C discord groups.
-
Scripts 4.8 is now available. I would like to thank Jerad2142 and Unstoppable for their contributions to 4.8 (If I missed anyone else who contributed to 4.8, sorry). Changes made since 4.7 Update 4: New scripts by Jerad2142. Implemented a new GameSpy broadcaster which replaces the old broadcaster. Read https://www.tiberiantechnologies.org/wiki/index.php?title=New_GameSpy_Broadcaster for details. It is now possible to host GameSpy games on client. (via the "Host Game" button in GameSpy listing) Added new engine call Reload_Level to reload the level. Added new engine call Force_Client_Reload to forcefully reload clients. GameSpy listing is now multi-threaded. Team information in GameSpy server dialog is shown on top of player list. Scriptable dialogs can be initialized for clients who didn't join the game yet. (For example, during connection acceptance) Games that do not report their "gametype" as "ccrenegade" will be filtered out in GameSpy listing. SPAWNVEHICLE, CHANGECHAR, GRANTWEAPON, SPECTATE, FLY and SETSPEED console commands can now be used in Campaign. 300 FPS limit is applied if VSync is enabled but refresh rate of the display can't be determined. Various fixes to the "DisableConsoleOutput" server.ini keyword so the Console_Output hook remains functional. Various fixes to the "LoadWaitTimeout" server.ini keyword so a WOL-mode server doesn't exit if server waits more than 15 seconds. Various fixes to the Remote FDS feature so that it functions more stable. Various fixes to the Server Operation dialog so that it closes and updates better. Various fixes to the Print_Client_Console and Print_Client_Console_Player engine calls. Fixes to the Take_Screenshot engine call. Fixed a bug that would cause AI to not use elevators if an action involving the elevator was canceled. Fix so PLIMIT, TIME and TIMEL commands can no longer be used by clients that are not host. Fix so rotation does not go back a few maps before it's about to end when rotation was changed. If you are running 4.7 Update 4 (or any earlier version) you will be automatically updated to 4.8. People wanting a full installer (to install from scratch or to do a full reinstall), a server download or a tools download can find them on the Tiberian Technologies website (www.tiberiantechnologies.org) in the downloads section. Appropriate source code for 4.8 as well as the source files for the map fixes in 4.7 (which are the latest fixes we have) can also be found on the site. People who need Dragonade will have to wait for a compatible version of Dragonade to be released.
-
Scripts 4.7 Update 4 is now available. I would like to thank Jerad2142, dblaney, cyberarm and Unstoppable for their contributions to 4.7 Update 4 (If I missed anyone else who contributed to 4.7 Update 4, sorry). Changes made since 4.7 Update 3: Made the ssgm.ini setting ExtraKillMessages able to be set per map. New scripts and fixes to existing scripts by Jerad2142, as a reminder you can check JmgUtility.h to see more details on the scripts added. Fix RA_Gap_Generator_Building to work properly with base power turning off and on. Fixed a bug in GSA listing that would cause the listing to be stuck at "Waiting server list..." when a server had 0 digit in it's IP address. Add console commands destroybuildingbytype, destroybuildingbypreset and destroybuildingbyname to destroy buildings by type, ID, name or preset. Added bad connection indicator to the "FPS" display (top right corner of the screen) that tells how many times a packet was re-sent and the time left to disconnect. Added Remote Console feature, that allows executing commands in remote server from client console and relaying server console output to clients using the "Menu" key with optional password authorization. Players will now see GAMEPLAY IS PENDING when server is waiting all players to load if they loaded before the server, instead of being free in the map. Add new dialog to tell players if they are waiting for a server load or for other players to load. Add new engine calls Is_Gameplay_Pending and Set_Gameplay_Pending that lets server code pause/unpause the game (with clients seeing "GAMEPLAY IS PENDING" while its paused) Fixes to the custom dialog logic. Add new console command whereami that tells you your current x,y,z position and what map you are on. Player ID and Name changes are now correctly sent over the network. Add new engine call Set_Gravity_Multiplier that lets you change the gravity multiplier of an object at runtime and have it sync up over the network. Owned keycards now display on HUD properly. Fix incorrect text on Options button & GameSpy Options menu in GSA listing dialog after leaving a game. Added the server.ini command DisableConsoleOutput which will disable the text output for large servers (console output can cause lag if there is a lot of it). Set AGT/Obelisk gun teams to building's team so scripts will target the correct enemy. Add new engine call Is_In_Pathfind_Sector to check if given point is inside a pathfind sector or not. Add new engine calls Print_Client_Console and Print_Client_Console_Player, to print text into client's console. (at top left corner) New feature where .mix, .dat and .pkg files contained inside TTFS downloads will be loaded (and the files inside them available to the game). This should improve download times (much faster to download one big mix file than many small files) Add URL protocol handler support (details to come) New engine calls Get_Repository_URL, Set_Repository_URL, Get_Screenshot_URL and Set_Screenshot_URL to change the repository and screenshot URLs New engine call Take_Screenshot to take a client screenshot (same thing as the sshot console command) Fix a backwards compatibility issue presented in previous version when maximum player count is greater than 1. Added the server.ini setting UseStockTeamNames, which if set to true will force Game_Info to print out GDI and Nod instead of whatever team name replacements exist for the map/mod. This is useful for brenbot which expects team names to always be the same from map to map. If you are running 4.7 Update 3 (or any earlier version) you will be automatically updated to 4.7 Update 4. People wanting a full installer (to install from scratch or to do a full reinstall), a server download or a tools download can find them on the Tiberian Technologies website (www.tiberiantechnologies.org) in the downloads section. Appropriate source code for 4.7 Update 4 as well as the source files for the map fixes in 4.7 (which are the latest fixes we have) can also be found on the site. People who need Dragonade will have to wait for a compatible version of Dragonade to be released.
-
Scripts 4.7 Update 3 is now available. I would like to thank Jerad2142 and Unstoppable for their contributions to 4.7 Update 3 (If I missed anyone else who contributed to 4.7 Update 3, sorry). Changes made since 4.7 Update 2: New scripts and fixes to existing scripts by Jerad2142. Add "Double HUD" option in wwconfig, along with minor improvements. New scripts by Unstoppable. Fix a crash when exiting the game from Configuration Options menu. Powerup pickup events are now displayed on the HUD for clients. Add scriptable menu and popup dialogs (the details of how to use them can be found at https://www.tiberiantechnologies.org/wiki/index.php?title=Scriptable_dialogs) Add new engine calls Display_HUD_Weapon_Grant_Player and Display_HUD_Ammo_Grant_Player to allow triggering HUD weapon/ammo grant indicator for a specific player. Discord Rich Presence now displays max player count in servers properly, instead of 127 and correctly handles "gameplay pending" case. Add Ctrl+A (Select All) support for edit box controls. Fix an exploit that can cause SFPS drops and other glitching (not going into details for obvious reasons). If you are running 4.7 Update 2 (or any earlier version) you will be automatically updated to 4.7 Update 3. People wanting a full installer (to install from scratch or to do a full reinstall), a server download or a tools download can find them on the Tiberian Technologies website (www.tiberiantechnologies.org) in the downloads section. Appropriate source code for 4.7 Update 3 as well as the source files for the map fixes in 4.7 (which are the latest fixes we have) can also be found on the site. People who need Dragonade will have to wait for a compatible version of Dragonade to be released. Sever owners are strongly advised to update to 4.7 Update 3 as soon as possible due to the exploit fix.
-
Just under 20 years ago a little video game developer in Las Vegas released a little game called Command & Conquer Renegade. To celebrate this historic milestone I present to you Scripts 4.7 Update 2. I would like to thank Jerad2142, Dghelneshi, Moonsense715 and dblaney for their contributions to 4.7 Update 2 (If I missed anyone else who contributed to 4.7 Update 2, sorry). I would also like to thank new scripts developer "The Unstoppable" for his contributions to 4.7 Update 2. Changes made since 4.7 Update 1: Various bug fixes. Add support for an Equipment submenu for the stock PT. It can be accessed while holding alt and clicking the refill button. It is enabled by the EquipmentEnabled keyword in tt.ini New scripts and fixes to existing scripts by Jerad2142. Get_Cost checks mutant nod and mutant gdi costs as well. New scripts and fixes to existing scripts by dblaney. Add support for secondary charge times that differ from the primary. Enable this with the SecondaryCharging keyword in tt.ini. Fix 59.954hz refresh rates from reporting as 59 instead of 60. Fixes to AI scripts by Moonsense715 Add a bool called UseLighting to make an AmmoDefinition receive proper lighting when enabled. Implement a 300fps limit when vsync is off. Fix an issue with sounds that gets rid of the occasional popping when a sound initializes panned way far to the left or right. Fix a bug in makemix.exe that could produce invalid mix files if your language settings are something other than English. Allow Neutral and Renegade colors for bot tags. If the current item being targeted (or the vehicle that item is in) is stealthed (and is an enemy item) then stop targeting that object. New scripts and changes to existing scripts by Unstoppable. Add "togglepower", "spawnvehicle", "changechar", "grantweapon","spectate", "fly", "givecredits", "givepoints" and "setspeed" console commands to the base game. Remove some console commands from the ExtraConsoleCommands SSGM plugin that are now in the base game. Remove the spectate SSGM plugin as its now in the base game (Spectate console command). Add in-game GameSpy server listing (similar to the existing WOL in-game server listing). To access the list, follow Multiplay Internet > GameSpy. It is possible to change nickname from the "Options" menu. Hosting games on GSA is not yet possible. Fixes to screenshot code including some stuff to provide more clear information should the screenshot code fail. Add Discord Rich Presence integration to display what player is doing, and server data if player is in a game. Add support for custom per-weapon reticles via a reticles.cfg file. (this should be possible to make per-map although I don't know if that will work correctly with the anti-cheat). Changes to the custom scope code so that the custom scopes can be per-map (although I don't know if that will work correctly with the anti-cheat). If you are running 4.7 Update 1 (or any earlier version) you will be automatically updated to 4.7 Update 2. People wanting a full installer (to install from scratch or to do a full reinstall), a server download or a tools download can find them on the Tiberian Technologies website (www.tiberiantechnologies.org) in the downloads section. Appropriate source code for 4.7 Update 2 as well as the source files for the map fixes in 4.7 (which are the latest fixes we have) can also be found on the site. People who need Dragonade will have to wait for a compatible version of Dragonade to be released.
-
Scripts 4.7 Update 1 is now available. I would like to thank Jerad2142, Dghelneshi, Moonsense715 and dblaney for their contributions to 4.7 Update 1 (If I missed anyone else who contributed to 4.7 Update 1, sorry) Changes made since 4.7: Various bug fixes. Fix a pathfinding related crash. Prevent decals from appearing on soldiers. New scripts and fixes to existing scripts by Jerad2142. New scripts and fixes to existing scripts by dblaney. Fixes to AI scripts by Moonsense715 Added DoorsOpenForAIRegularly tt.ini keyword that when set will cause AI soldiers to open doors the same way as players. Fix crash with sidebar sounds. Allow HUD time and credits (in hud.ini) to be centered horizontally/vertically. Fix some crashes. If you are running 4.7 (or any earlier version) you will be automatically updated to 4.7 Update 1. People wanting a full installer (to install from scratch or to do a full reinstall), a server download or a tools download can find them on the Tiberian Technologies website (www.tiberiantechnologies.org) in the downloads section. Appropriate source code for 4.7 Update 1 as well as the source files for the map fixes in 4.7 (which are the latest fixes we have) can also be found on the site. People who need Dragonade will have to wait for a compatible version of Dragonade to be released.
-
Help "Internal Error" Command & Conquer Renegade Single Player
jonwil replied to Vlays's topic in Help & Support
I cant be 100% sure but I am fairly certain that this crash is one that has been fixed already with the fix to be in the next release when I get around to making it. -
Have you tried zipping up the crashdump to make it smaller? Or uploading it to a file hosting site like mega.nz?
-
News W3X Export Tools for 3DS Max 2017 inital beta released
jonwil replied to jonwil's topic in Community News
A new beta has been released that supports animation and the "optimize collision detection" checkbox. Please test it and look for bugs. w3xtools.7z -
I am releasing a beta version of the W3X export plugin for 3DS Max 2017 so people can test it and look for any bugs or anything that doesn't export properly or anything else I need to fix. This pack contains: W3X Exporter for 3DS Max 2017 - New tools for Max 2017 to export W3X files from The source code to to the W3D Exporter and memorymanager.dll Read the readme.txt file for details of how to install the plugin and how to work with the DirectX Shader materials (especially take note of the the need to install the latest release of Max 2017 from the provided link and the note that people using the DirectX Materials need to switch to the "Legacy Direct3D" driver in max for the shader files to work) If you have any questions, you can find me here, on the w3dhub discord or on various C&C discords. I am looking for people to please test this as much as possible and look for whatever bugs you can find. Animation export isn't working yet, nor is the "optimize collision detection" checkbox but otherwise everything else should be working.
- 1 reply
-
2
-
Also if you are messing with the source code and it asks if you want to upgrade the source to the latest version of the toolset or something, hit cancel. You don't want to upgrade.
