Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

icecoldduke

Members
  • Content count

    319
  • Joined

  • Last visited

Everything posted by icecoldduke

  1. Hey, I wanted to show the next round of my effort to try and re-create the original Heretic 2 source code. This time I won't take it down unless Raven or someone from Activision asks(just send me a nice DM, I'll take it down immediately :) ). Source Effort 1.0: ref_gl.dll from Quake 2 has been modified to load Heretic 2 data. Source Effort 2.0: Quake2.dll. I have got Heretic 2 running without any closed source bits; I modified the Quake 2 GPL release, to become the "quake2.dll" in Heretic 2. The code changes I made to create the new "quake2.dll" foundation aren't made hap hazzardly; I have mapped enough functions in quake2.dll and was able to use hex rays to help me make the needed code modifications to get this far. I have got the foundation on its feet, just a few big things are left: 1) 3rd person camera has to be re-created. 2) Player pmove needs to be re-written based on the hex rays output of the original Quake2.dll. 3) Client effects need to be hooked up the network replication. 4) Minor things like obituary notifications and such. The intro to the game (ssdocks) "runs" the camera positions and orientations are off since all of that code is in original quake2.dll, and of course you can't move since I need to port over pmove. PMove I think should be alright to port, but the c compiler made a lot of optimizations to their camera system that makes it really hard to follow. I'm reaching out to see if anyone would be able to re-create the third person camera for Heretic 2? Github: https://github.com/jmarshall23/Heretic2/tree/Engine-DLL
  2. icecoldduke

    Quake 4 - Doom 3 GPL integration

    So I could integrate Quake 3 bot code into Quake 4. Check out the video, preview isn't working. https://www.youtube.com/watch?v=h6fcX-_SUbA
  3. icecoldduke

    Quake 4 - Doom 3 GPL integration

    Hey, I have a few projects going(trying to find the right one for a proper RTX port). I have integrated the Quake 4 SDK with Doom 3 GPL. The game is almost 100% playable, there are a couple non progressions were the doors don't open(you can see in the video), but I can play five levels or so before encountering a true non progression. AI, GUIS, and a lot of Quake 4 specific bits are all ported over(a lot of that work I already did in other projects). Alpha 2 Binaries: https://github.com/jmarshall23/Quake4Doom/releases/tag/Alpha2 Github: https://github.com/jmarshall23/Quake4Doom
  4. icecoldduke

    Heretic 2 - Source code recreation part 2

    Just to catch everyone up: the last core bug remaining in the Heretic 2 bits is the bugs in the collision detection. Unforunetly Raven in Heretic 2 did some "magic"(only calling it magic because I have no idea) bits to make the collision detection way better then Quake 2; and I haven't been able to find the magic sauce to get that fixed. Probably the next step is switching the collision detection code over to like PhysX or something; I know someone is doing that for Quake 2, once thats done I might revist this and get that code integrated.
  5. icecoldduke

    Quake 4 - Doom 3 GPL integration

    No sorry I just woke up and read it the wrong way I guess :). The entire point though of this project is to create a open source engine that can run Quake 4, and its already there; the contrast adaptive sharpen is just a additional feature and isn't the point of the project. The point of the project is to modify Doom 3 GPL to have the engine features of Quake 4 and can play Quake 4. Its already to that point(singleplayer is completely playable), with the exception of the particle engine and multiplayer and I'm trying to fix multiplayer now.
  6. icecoldduke

    Quake 4 - Doom 3 GPL integration

    It's not a mod. I've recreated chunks of the Quake 4 source code in Doom 3 and added graphical features that wouldn't be available otherwise. This post kind of made me angry(honestly). Contrast adaptive sharpen is a post processing pass, and the visual results give a sharper result then simply disabling low res textures. In fact you can't use CAS with low res textures. This mod adds Quake 4 support to the Doom 3 GPL code base by modifying the engine to load the Quake 4 DLL. Contrast Adaptive Sharpen is just a new graphical feature in the codebase, but you can't get the same result by just editing the config of the original game.
  7. icecoldduke

    Quake 3 - Bots using Navmesh

    Hey, I've been working on replacing AAS in Quake 3 Arena with Recast NavMesh. This is quite a lot of work, because the AAS bits in Botlib basically touch all of the bot code, so on top of replacing AAS, I'm also heavily refactoring the code. Right now the bots can pathfind around the level, attack each other, and the player. There are some bugs, which you can see in the video. Sometimes the bots get into a bad state, or change states way too slowly. Source Code: https://github.com/jmarshall23/Quake3AI Video: Technical Bits: The Quake 3 Arena bot code is separated into 4 layers(more on that here: http://www.kbs.twi.tudelft.nl/docs/MSc/2001/Waveren_Jean-Paul_van/thesis.pdf). Layer 1 and Layer 2, which include pathfinding, fuzzy logic, goal stack, etc were in the Botlib library. Those bits of code have been cleaned up and moved to https://github.com/jmarshall23/Quake3AI/tree/master/code/game under bot_*.c. Level 3 and 4, have been heavily butchered, and are the reason why things are quite working right, but those bits are in https://github.com/jmarshall23/Quake3AI/tree/master/code/game/BotAI under BotAI_*.c I've only tested q3dm7, but you can build a navmesh for any Quake 3 BSP maps, using the bspnav tool https://github.com/jmarshall23/Quake3AI/tree/master/code/bspnav. I'll let you guys know when its more in a state were players can jump in and use it, it does provide a fun experience as is, but it does need work. I'm hoping in its current state it might benefit people working on custom idTech 3 projects. -Justin
  8. icecoldduke

    Quake 4 - Doom 3 GPL integration

    In previous work(before we had access to add new engine features with Quake4Doom) I added CaS to the closed source engine, but it had a fixed set of resolutions because I couldn't pass in the render target information; obviously that's fixed. (look at it zoomed in). CaS OFF CaS ON
  9. icecoldduke

    Quake 4 - Doom 3 GPL integration

    Alpha 3.2 is now up https://github.com/jmarshall23/Quake4Doom/releases/tag/Alpha3.2
  10. icecoldduke

    Quake 4 - Doom 3 GPL integration

    Took down Alpha 3, will update when its back up.
  11. icecoldduke

    Quake 4 - Doom 3 GPL integration

    Quite a few fixes including dmap(map compiler) and the runaas compiler can now build Quake 4 maps(just without the AAS 1.08 tactical information, the engine can read that information, but if you want to make new content, runaas can't generate that data yet). Also fixed the door being black. This is the last visual issue, aside from missing particles, which I won't be fixing. Quake 4 had a custom VFX engine called BSE which was never open sourced and is huge pain to reverse engineer. So here's hoping Microsoft will open source Quake 4 at some point, until then it won't have particles :(. But all the remaining visual issues are now fixed.
  12. icecoldduke

    Quake 4 - Doom 3 GPL integration

    Fixed quite a few graphics bugs. Only graphics bugs left is some of the black doors.
  13. icecoldduke

    Quake 4 - Doom 3 GPL integration

    With my latest change, Quake 4 is now 64bit. https://github.com/jmarshall23/Quake4Doom/commit/3de814efdca130d7beec24c7c8d6632d322cbff6
  14. icecoldduke

    Heretic 2 - Source code recreation part 2

    I will not be recreating the software renderer for Heretic 2. I'm only focusing on hardware rendering only/raytracing.
  15. icecoldduke

    Hexen: Edge of Chaos Update

    GZDoom couldn't handle a Hexen recreation in my opinion; Doom 3 can handle a Hexen port, it just takes some work on the rendering side of the things.
  16. icecoldduke

    Heretic 2 - Source code recreation part 2

    Thanks for that, I'll definitely take a look. I probably won't take anything graphics related though; I plan on ditching OpenGL and switching over to Vulkan or D3D12 at some point and see if I can add real time lighting via raytracing as well as a opt in feature.
  17. Using a custom pipeline process, I created PDB files(debug symbols) for Quake 4 and Prey. It looks like the process captured 45% of the Quake 4 functions and 70% of the Prey functions. I created these PDB's by creating function signatures in Doom 3 vanilla using the GPL code, and the ETQW demo pdb files that Splash Damage released with the demo. If anyone is interested, I posted a bit more about it here along with the links to the generated PDB files: http://www.doom3world.com/index.php?threads/quake-4-and-prey-pdb.96/
  18. icecoldduke

    Quake Wars, Quake 4 and Prey PDB(Debug Symbols)

    I have been perfecting my function map hashing process. Using the Quake Wars 1.0 demo PDB file(yes the PDB debug file was accidently included in the 1.0 demo), I was able to match 10,000 out of 11,500 functions in the Quake Wars 1.5 retail SDK executable. The PDB file I created can be loaded in visual studio. https://github.com/jmarshall23/Quake4BSE/tree/master/quakewars/sdk15
  19. icecoldduke

    Heretic 2 - Source code recreation part 2

    First update video: I fixed a lot of things since the last post: one of the more evident bits in there is swimming now works, game plays significantly better, gameplay mechanics are now working a lot better, check out the video and let me know your thoughts.
  20. icecoldduke

    Quake Wars, Quake 4 and Prey PDB(Debug Symbols)

    The Quake 4 Mac OS version actually contains debug symbols(they weren't stripped out). Using that I was able to figure out most of the interface bits to Quake 4 toolsx86.dll. http://www.doom3world.com/index.php?threads/quake-4-toolsx86-dll-interface.105/ class rvToolsInterface { public: rvToolsInterface::~rvToolsInterface() = 0; virtual void GetInstance(void) = 0; virtual HWND GetParentWindow(void) = 0; virtual HDC GetDC(void) = 0; virtual bool IsParentWindowVisible(void) = 0; virtual void InitTool(int,idDict const*) = 0; virtual void ShutdownTool(int) = 0; virtual bool IsToolActive(int) = 0; virtual void Frame(void) = 0; virtual void Shutdown(void) = 0; virtual void HandleToolPrint(char const*) = 0; virtual void HandleMapChange(void) = 0; virtual void StartLevelLoad(void) = 0; virtual void EndLevelLoad(void) = 0; virtual int GetSourceControl(void) = 0; virtual void MakeGameCurrent(void) = 0; virtual void SetDefaultState(void) = 0; virtual void Set2D(int,int) = 0; virtual void DoRBFDialog(char const*) = 0; virtual void PlaybackEditorRefresh(void) = 0; virtual void ModViewShutdown(char const*) = 0; virtual void ModViewRun(void) = 0; virtual void ModViewGetJointStatus(int) = 0; virtual bool ModViewIsSurfaceSelected(char const*) = 0; virtual bool ModViewIsSurfaceHidden(char const*) = 0; virtual int ModViewGetBgrndColor(void) = 0; virtual bool FXEditorIsActive(void) = 0; virtual void FXEditorRefreshEffects(void) = 0; virtual void FXEditorPlayEffect(bool) = 0; virtual void FXEditorStopEffect(void) = 0; virtual void FXEditorRefreshMaterials(void) = 0; // Unknown return class! virtual void *GEAllocateWindowWrapper(idWindow *) = 0; virtual void GEDeallocateWindowWrapper(idWindow *) = 0; virtual void GEFinish(idWindow *) = 0; virtual void GEAddScript(idWindow *,char const*,char const*) = 0; virtual void GEVariableDictSet(idWindow *,char const*,char const*) = 0; virtual int GESetStateKey(idWindow *,char const*,char const*,bool) = 0; virtual void GEMessage(char const*,...) = 0; virtual void DebuggerPrint(char const*) = 0; virtual void DebuggerCheckBreakpoint(idInterpreter *,idProgram *,int) = 0; virtual void DmapCleanupOptimizedShadowTris(int,srfTriangles_s *) = 0; virtual void DmapSuperOptimizeOccluders(SOOData_s *,idVec4 *,int *,int,idPlane,idVec3) = 0; virtual void DmapOutputString(char const*) = 0; virtual void SetListenerArea(int) = 0; virtual int GetListenerArea(void) = 0; virtual void PhonemeGen(idCmdArgs const&) = 0; virtual void ShakesGen(idCmdArgs const&) = 0; virtual void RoQFileEncode(idCmdArgs const&) = 0; virtual void Renderbump(idCmdArgs const&) = 0; virtual void RenderbumpFlat(idCmdArgs const&) = 0; virtual void Dmap(idCmdArgs const&) = 0; virtual void RunAAS(idCmdArgs const&) = 0; virtual void RunAASDir(idCmdArgs const&) = 0; virtual void RunReach(idCmdArgs const&) = 0; virtual void RunCluster(idCmdArgs const&) = 0; virtual void RunAASTactical(idCmdArgs const&) = 0; virtual void LocaliseGuis(idCmdArgs const&) = 0; virtual void LocaliseLipsyncs(idCmdArgs const&) = 0; virtual void LocaliseMaps(idCmdArgs const&) = 0; virtual void LocaliseValidateLipsyncs(idCmdArgs const&) = 0; virtual void LocaliseValidateStrings(idCmdArgs const&) = 0; }; struct rvToolsImport_t { int version; int unknown; HWND hwnd; HDC hdc; HGLRC hglrc; PIXELFORMATDESCRIPTOR *pfd; idSys *sys; idCommon *common; idCmdSystem *cmdSystem; idFileSystem *fileSystem; idRenderSystem *renderSystem; idSoundSystem *soundSystem; idRenderModelManager *renderModelManager; idUserInterfaceManager *userInterfaceManager; idDeclManager *declManager; void *off_103FCAA0; idCollisionModelManager *collisionModelManager; idGameEdit *gameEdit; void *off_103174C8; void *off_1031B6B8; void *off_1030FFB0; void *off_10310698; void *off_103FC49C; void *off_10310040; void *off_103FC344[0]; void *off_103FC428; idSession *session; idImageManager *globalImages; idGameLocal *game; }; rvToolsInterface *GetToolsAPI(rvToolsImport_t *api, operator new, operator delete, int *(GetHeapSize)(void *unknown));
  21. icecoldduke

    Heretic 2 - Source code recreation part 2

    x64 now runs, as evident in this screenshot and I'm at the point were I can remove the 32bit platform, and also got the hud completely working.
  22. icecoldduke

    old games modded still better

    I completely agree about the console part, but in theory you can make data mods(new maps in idStudio, decl changes, etc) and have it work across platforms. Didn’t Skyrim have mods on consoles, I can’t remember.
  23. icecoldduke

    old games modded still better

    No I get they want to focus on DLC2, but I believe that’s a mistake. I think Eternal was very controversial for a lot of reason and mods would open up the game to a wider audience.
  24. icecoldduke

    old games modded still better

    I disagree honestly; Doom 1 shareware episode was the best episode in the Doom franchise from official releases. Something got lost in the episode 2 and 3 bits in terms of quality. Doom 2 had some way better monsters, but the level design was also kinda lacking in the same way episode 2 and 3 of the original game. I think what kept Doom alive over the years was us, the modding community. Doom provided a fun, baseline game, that could easily be tweaked and expanded upon by just about anyone. But objectively speaking, community made content was a lot more fun to play then the original levels(with the exception of episode 1 of Doom 1). The problem with modding modern games, is it takes a lot more development time to see results; so I agree in a sense we won't see another Doom, but that's not because the market is saturated, but because developers aren't spending enough time creating more user friendly tools to pass on to customers to make mods.
  25. icecoldduke

    Heretic 2 - Source code recreation part 2

    Some bigger updates(most technical). I got more VFX replication working(evident by the lens flares working). I have combined everything into a single executable(before Heretic 2 was spread across multiple DLL's); i needed to do this so I can eventually remove Raven's memory manager in the code. Also got 64bit on its feet, while it loads in, the flex models aren't rendering correctly in 64bit for some reason.
×