Journals

Overfloater2 weeks ago2024-11-03 08:56:23 UTC 4 comments
Just wanted to let everyone know that a new update for Pathos has dropped, which includes some code fixes and optimiztions, as well as new features, such as lightmap upscaling and lightmap data compression.

Changelog:
- Updated tools_readme.md with information about bspconvert and pbspv2update.
- Updated shaders.md to provide better information about invalid states.
- Recompiled the levels to use 4x lightmap upscaling.
- Added a new room to feature the new post-process effects added by valina354.
- Added new voice recordings to help explain new features.
- Added new constant to CString class to denote null result from find.
- Added lightmap data compression support to Pathos BSP V2 and the ALD file formats.
- Added string caching to CString class to help decrease memory usage.
- Modified lightmap data storage to store the default lightmap data on-disk if ALD files are present, instead of storing it in memory all the time.
- Modified CMD5 class to use a constant for the size of the hash result.
- Modify texture manager to use maps instead of linked lists for faster texture lookup.
- Modify various engine structures and classes to use std::map and std::unordered_map instead of the arrays and linked lists.
- Added CSysPrintInterface to allow for tokens that set how many times a message should be printed to the console per game or application instance.
- Added experimental lightmap data compression feature.
- Fix memory leak in dynamic light manager.
- Fix memory leak in menu particle system.
- Fix memory leak in portal renderer.
- Fix GL texture not being deleted in portal class.
- Fix two memory leaks in texture renderer.
- Got rid of hash arrays previously used to limit the number of repeating messages printed to the console.
- Modified ambient_generic entity to support playback of sentences.
- Improved VBM loading code by getting rid resizings/memory reallocations during level load.
- Extended math_counter entity to provide different increment values and operations per trigger mode.
- Fix trigger_relay_binary, where it would always trigger it's On target regardless of it's actual state.
- Fixes various problems in pathos_jack.fgd with the new entries.
- Added "Initially dark" spawnflags to light and light_spot entities.
- Added pbspv2update tool to help update V2 bsp files to V2.1.
- Updated DMC forest skybox to latest version.
- Updated compile scripts to use the lightmap scaling feature.
- Modified vhlt compile tools to now support lightmap upscaling up to 8x(still needs work).
- Modified vhlt compile tools to support miniz compression of lightmap data.
- Improved parameter design for new features in the compile tools.

Commit:
https://github.com/TheOverfloater/pathos-public/commit/1e7fe9f6f80659b272dad0d55fed8d8fefc98206
I just wanted to create this journal to let everyone know that a new Pathos update has dropped. I've added a ton of new features, but mainly what a lot of people have been wanting to have, and that is support for the type of animated and switchable lights you had in Quake 1 and Half-Life! Yes, you no longer need to use env_dlight and env_spotlight to achieve this, but instead this is natively supported by Pathos now.

A list of the changes made:
- Merged custom normalmap feature from PR #43.
- Reformat PR #43 changes to be in line with Pathos coding standards.
- Fixed issue in PR #43 where the last set current water pointer would override any custom water normalmap textures.
- Merged "pos" and "maps" command from PR #38.
- Reformat PR #38 to be in line with Pathos coding standards.
- Fixed PR #38 to report player position in world, instead of the last view origin used for rendering.
- Implementation of Pathos BSP Version 2 format.
- Custom storage for ambient, diffuse light data, and light vectors.
- Add data variable in face data for potential lightmap scaling feature in the future.
- Add data variable in face data for potential smoothing groups feature in the future.
- Support added for Half-Life 1-type animated lights.
- Extend light and light_spot entities to support the animated/switchable lighting feature.
- Add FGD entries for styles to light and light_ entities.
- Optimize CBasicDraw class by adding support for rendering quads using indexes.
- Added func_particleblocker entity to specify select brush entities that particles can collide with.
- Modify ALD format to support animated lights along with bump mapping data generation.
- Modify renderer to support bump map data generation together with animated lights.
- Added function header comments in some files.
- Extension of file interface by adding a function to query the game folder name.
- Cleanup of model cache code that identifies and loads BSP files.
- Optimized beam rendering and vapor trail beam code to be more performant by rendering them as quads with indexes.
- Optimize vapor trail beam lighting retrieval code by only doing it once per a given distance.
- Optimized lightmap generation code by extending the AllocBlock code to extend both height and width from now on.
- Added debug cvar to enable dumping of lightmaps generated by BSP renderer.
- Added game_staminamodifier entity.
- Modify worldspawn entity to now send lightstyles to client.
- Fix worldspawn not calling base class's spawn function in derived function.
- Fix CGLSLShader not creating logs file folder when an error occurs, causing logs not to be created.
- Add bspconvert tool, which can convert Pathos V1 BSP files to Pathos V2 version.
- Extend entitytest2 map to showcase switchable lights.
- Move some BSP processing code to shared file.
- Move lightstyle code in renderer out of dynamic light class and into it's own.
- Optimize on lightstyle array code.
- Add compatibility code for V30 BSP and Pathos V1 BSP to support legacy bump map data storage solution.
- Clean up struct usage in BSP loading code to specifically use named structures for V30 and Pathos V1 BSP.
- Move lightstyle array code out of CEnvDLight and into server-side lightstyle class.

You can find the latest commits here:
- For Pathos: https://github.com/TheOverfloater/pathos-public/commit/5ea8844617eb125175550edbe34cb59898fc7acf
- For Pathos's version of VHLT: https://github.com/TheOverfloater/pathos-vhlt/commit/b59bac0943923d919059353bb725ee51b3f36b2f
Overfloater2 months ago2024-09-14 10:46:36 UTC 4 comments
For anyone using the Pathos Engine, a new update has dropped, adding some new features and fixing issues.

Link to the repo:
https://github.com/TheOverfloater/pathos-public/

Changelog:

- Add missing entries for knife to hud script.
- Add support for displaying ammo counts for item/ammo/weapon pickup history.
- Add "Documents" viewer Game UI feature.
- Add muzzleflash particle script for silenced weapons.
- Remove HDR feature due to severe performance issues caused by FBO blitting.
- Add experimental Bloom post-process feature to Pathos.
- Add missing schema definition for screen text.
- Add explosion gibbing burn damage to gibs.
- Make pressing Escape key while in a Game UI window always close the window.
- Add support for Bitsets to client/server User Message system.
- Add support for custom colors to AI awareness bar.
- Added GameUIScrollableSurface class.
- Add support for 32 mission objectives max in Objectives Window.
- Fix view model snapping issue when exiting ladders due to view model lag.
- Expand CBitSet class to cover all basic bitset operations/checks/features.
- Fix issue with flashlight disappearing for 1 frame after exiting ladders.
- Hide engine command _set_hrtf from users.
- Improve overdarkening feature used by lightmaps.
- Fix it so that the "stopmusic" command completely clears music, no longer letting it continue on reload.
- Add engine function to server to allow retrieval of the invoking player edict on an issued command.
- Fix issues with engine render code not filtering skybox/portal entities properly when rendering.
- Fix issue with alpha to coverage corrupting the menu when used with legacy transparents enabled.
- Fix engine to use R_BindCubemapTexture for all cubemap texture binds now.
- Fix dynamic lights set to not be culled by the main view frustum still being culled regardless.
- Fix lightstyle for dynlights being broken if shadows are disabled via cvar.
- Add safeguard against problematic angle values in dynamic light code.
- Change usable object glow aura color from blue to green for better visibility.
- Remove more C-style casts in favor of C++ ones.
- Modify any rectangle texture binds to use R_BindRectangleTexture instead.
- Fix an issue with portal surfaces not always binding the rectangle texture properly.
- Fix decal generation code memory corruption issue with bone index arrays.
- Add support for dynamic-sized CArray<> basic variable types to the save-restore system.
- Add support for CBitSet to the save-restore system.
- Optimize memory used by entities by only declaring save-restore field data when being saved/restored.
- Add data sync issue on level change with player prediction when on moving entities.
- Fix MSG_SNDENGINE_OGG message reading channel as unsigned and not letting all chanels be specified.
- Fix prediction being run on client even when local server is halted.
- Add error message to schema loader if file is not found.
- Fix issue with SDL_INIT_VIDEO not being called in the right order, not allowing context version to be set.
- Modify NPC AI code to use CBitSet for AI bitflags instead of Uint64.
- Expand AI lean/enemy awareness code to support awareness levels for multiple entities.
- Fix crash issue in NPC enemy awareness code.
- Modify NPC code to support determining whether to proritize enemies that can be melee attacked.
- Modify Patrol NPC code to clear the patrol history far more infrequently when errors occur.
- Modify some schedule names to feature the names of the base classes.
- Added support in ambient_oggstream to fade out/stop a specific music track played by another such entity.
- Add index/name consistency check to player weapon type enums/definitions arrays.
- Add index/name consistency check to sequence activity type enums/definitions arrays.
- Add index/name consistency check to bullet type enums/definitions arrays.
- Fix light_environments on levels not using alternate lightmaps not being setting env lighting values at all.
- Improve materials definition script code to be more efficient with memory.
- Add feature for spawning entities with "give" command that allows givin them targetnames using a third parameter.
- Modify saved passcode system in player code to rely on dynamically sized string_t CArray type.
- Modify weapon pickup code to leave empty weapons behind in special cases.
- Add new HUD weapon slot for submachine guns.
- Modify mission objectives code to use string_t CArray dynamic array instead of fixed-sizeo one.
- Fix weapon code to properly play pickup animations if player picks up a matching weapon with the clip empty.
- Modify same ammo types shared by weapons to be single pools of ammo instead of separate.
Overfloater5 months ago2024-06-02 17:59:14 UTC 4 comments
Hello everyone, I just wanted to inform you that the reason Pathos updates have been so dry and that I haven't been around, is that I've been dealing with health problems as of late. I had a gastrointestinal infection that, coupled with my autoimmune liver disease, has wrecked my health for the past 2 weeks. I've been mostly away due to not feeling well and needing to(slowly) heal. Once I am better I will be more active. Hope you are all doing fine, and I'll see you around.
Overfloater7 months ago2024-04-17 18:31:10 UTC 4 comments
Some might've noticed I've been absent on the Pathos Engine channel of the TWHL Discord. I've been dealing with some problems in life and for the sake of my sanity I need to take some time off from the project. Yes, again, and this time for a bit longer. If you have any burning issues, please e-mail me at doommusic666@hotmail.com or submit an issue on the Pathos repository. Until then, take care.
Overfloater8 months ago2024-03-12 18:29:38 UTC 2 comments
So with the open-sourcing of Pathos being more successful than I expected it to be, and after fixing bugs and other issues and having a bit more of a stable build available on GitHub, I've decided to take a bit of a break. Truth is I've spent the last few months working tirelessly on Pathos(and by extension, my game), and I've hit a bit of a burnout. Spending hours upon hours on one bug I couldn't fix yet made me realized, I've become a bit obsessed with it.

What does this mean? Basically, I will be online less, and I will be taking a break from working on Pathos for a little bit. I'll still check any issues that are reported, from time to time, but I will be unresponsive for a bit. So if you find any issues, please raise it on GitHub so I can track it easier.
Overfloater8 months ago2024-03-06 21:20:08 UTC 5 comments
So... I didn't think I would crunch this hard, but I did it. I spent the last few days working tirelessly on the public release of Pathos, to remove spoiler code and content, to remove as much Half-Life content as I could, and to write documentation. After all that blood and sweat, I present to you, the public release of Pathos on Github:

https://github.com/TheOverfloater/pathos-public/tree/main

This includes the files required to run the game, along with some example levels, example NPCs and models. I have decided that for now, I will not include the custom Hammer editor I use due to obvious reasons. I recommend using JACK, but more is explained in the readme.

I hope you find it useful, and enjoy.
Overfloater8 months ago2024-03-05 16:00:33 UTC 3 comments
I've been contemplating this for a while, and I've recently come to the decision that I will be open-sourcing the Pathos Engine. After the experience of needing to maintain and provide fixes for Trinity back in the day, I was put off by the idea of having to do the same all over again, while at the same time being busy with the process of creating a video game as a one-man team.

For those who do not know exactly what Pathos Engine is: Pathos is a Quake-like game engine heavily inspired by GoldSrc. It offers extended limits, better graphics and better performance, support for HD textures, vertex weights, normal mapping, specular highlights, dynamic lighting with shadows, and a lot more. This all without any copyrighted code attached to it. Unlike Xash, it does not rely on Half-Life code at all. Everything was reproduced with a clean-room approach while referencing the Half-Life SDK and ReHLDS, as well as the Source SDK.

This means that while the game is very similar to Half-Life and Quake, it is not the same engine. And as far as content is concerned, you are still not allowed legally to use Half-Life code and content in Pathos. Pathos is not compatible with GoldSrc mods, and attempting to run such content on Pathos will cause issues.

I have several videos on my YouTube channel which show Pathos's development progress, and new features:
https://www.youtube.com/playlist?list=PLQnXkjA1l7uamgh8_ZnrFPSQxm1Kr91oA

I have already begun work on an open-source version of Pathos, one which is missing most if not all game specific code and content that would qualify as spoilers, or placeholder content I do not on, which I cannot just release. This version of the engine will offer the same expand-ability and functionality as the one my game uses.

However, I also believe that Pathos can offer the community a lot, in the form of a perfectly legal engine replacement for GoldSrc. People have become more and more frustrated with recent updates to GoldSrc, in which Valve still refuses to provide useful updates, such as upping the model limit and the AllocBlock limit, for example.

For now the current hurdles I am facing are the following:
  1. The need to ensure that no content remains which would act as spoilers for the game I am building on Pathos.
  2. Removing content that is not needed for the example game to run.
  3. Removing Half-Life 1 textures, sprites, sounds and models.
  4. Writing documentation for each entity in the game.
  5. Writing a comprehensive credits list.
Currently I have already accomplished tasks 1 and 2 mostly, but there's still work to be done. The remaining HL1 textures and models will be wiped clean from the code with proper replacements provided. This part is not that big of an issue, but it will take time to do so.

As far as entity documentation is concerned, this will take a bit of time to accomplish, same for the credits list.

So when will the release happen? I can't provide a deadline, as the amount of work left to be done is not small, and I need to make sure that legally, Pathos is covered and won't end up like Xash when it comes to Valve.

Speaking of which...
  • The level editor
Pathos's model format requires a custom level editor, and currently there are no alternatives, other than the custom Hammer I use, which was based on the 2003 leak code. There have been previous examples of people releasing custom Hammer binaries(Hammer++) and Valve not really caring, but one thing which would be great, is to add support to TrenchBroom, however this again depends on how much time I am willing to sacrifice for this purpose. In all likelyhood, I will be providing the custom Hammer binary without any sources as part of the release.
  • The model compiler
Pathos uses a custom model format for model geometry data, in order to support vertex weights and facial animations. However, I am still using the original HLSDK studiomdl code, albeit heavily edited. I would prefer not sharing the source code for this until I have my own clean-room version for Pathos available. So until then, I will only supply the binary with the release.

So, I hope this has gotten people excited. I will try to get things out the door as soon as I can, but I can't promise anything in terms of timelines. I hope to keep you updated as this project goes on.

Edit: Decided to edit my opinion regarding JACK out. Regardless of me thinking it's the most likely scenario, that's still just like, only my opinion, so I'd rather everyone treated it as such.
Overfloater9 months ago2024-02-04 20:02:24 UTC 2 comments
So Valve's 25th anniversary update pretty much broke all custom renderers that would replace Half-Life's world renderer code, and that meant I had to jump into Trinity and apply some fixes. I initially thought I only had to change one engine structure, but oh boy, Valve had some surprises for me. Turns out they now use a variable which I previously used for storing indexes, as it was never used previously. I had to totally rewrite everything that dealt with that particular bit.

You can find it here:
https://github.com/TheOverfloater/trinity-engine
  • Abyss Engine
I also wanted to provide some updates on some stuff I spoke of in the Discord. As most of you know, Trinity eventually evolved into the Abyss Engine, used in Abyss-048 and Half-Life Episode Two, and now also a mod called Nohra's Concealment. This engine revision has improved code, such as studio models rendered in retained mode, and support for vertex weights. It's also an all-shader based renderer, which means it's far faster than Trinity was. It uses OpenGL assembly shaders, which means it has very wide support across different GPUs.
So why do I bring this up? I'm planning on revising the Abyss Engine and bringing it into a form that can be open-sourced. I will post that also on my Github page once it's done. My plan is to give it as part of a clean SDK much like Trinity, but that'll also require some work.
  • Reckoning Engine
The third and final revision of the engine is known as the "Reckoning Engine", which is what it became before I moved over to my custom engine, Pathos. Now the Reckoning Engine is a very different beast and it also breaks compatibility with some HL features, like switchable/animated lights, but instead it supports those features for dynamic lights. This revision of the engine is completely shader-based also, and uses GLSL. The list of features is way too long to discuss here, but things like a rudimentary facial animation system, variance shadow mapping, support for Paranoia's bump map data in the BSP, specular light reflections, etc are there. I plan on eventually open-sourcing this engine version as well. Opensourcing this version would be a rather difficult piece of work, but it's doable.
  • Raven City
I have been thinking of releasing the corpse- er, I mean, the most playable version of Raven City for those who might want to see this mod. Time here is a major factor, of which I don't have much when it comes to fixing some broken things to make it work. It also doesn't help that the mod is in some ways an absolute cringe-fest and I want to just remove some... really embarrassingly cringey crap from it. Another issue is that it requires a very specific version of Cg to work properly, which I need to dig up from somewhere.
  • Half-Life : Retail
I think it goes without saying that with the HL25 update, this is effectively cancelled, but I will probably upload the source code at least on Github, but I won't create a final release.
I started work on a mod called Half-Life Retail, which as the name suggests was aimed at bringing back the game to the condition of the original 1998 release, which had several features that the later versions do not. Namely:
  • Those old shadows, which were just the model flattened on the floor at an angle.
  • A different type of view model bobbing, where the effect wasn't like it is today(basically the same as Quake 1's).
  • Having fleshy hit sounds play as a sort of hit indicator when you shoot an NPC.
  • The old Quake-style view roll when you turn around while running, or strafing.
However, I also started toying around with some stuff I felt would be nice to have. Basically, one feature I added was to insert per-vertex lights into the game by relying on light.rad and the level geometry. Of course, I will make this toggleable via the options for those who do not want it. Another feature I also added over from the Raven Beta sandbox mod, is stencil shadows which are cast by these lights.

Another feature I have in mind is to allow gl_overbright to work both on models and the world. I dislike how flat lighting is in OpenGL, and this would basically fix that issue. This too of course would be toggleable.

Anyone interested in perhaps playing a release of this mod? If so, I will probably end up creating a github page for it and updating it there, but also releasing it here on TWHL, and perhaps ModDB. Not sure about the latter though.

Also if you have some other features from the original retail you would like to see, I'm all ears.
DNR
Overfloater1 year ago2023-02-22 22:12:32 UTC 0 comments
DNR
Overfloater2 years ago2022-08-26 13:15:20 UTC 1 comment
Hello everyone. I was thinking of this for a while now, but I thought I would give returning to TWHL another chance. Seven months ago I left because I had a ton of issues to go through, and I also felt like I didn't have any real reason to remain in the community, since I switched from working on Half-Life as a base to my own engine.

However, I must admit I want to give being part of a community another chance. I'm sorry for leaving all of a suddenly and just disappearing, leaving some people hanging in the air. I had by then a massive backlog of problems, and I really just needed to reduce my life to a size I was able to manage, and being in Discord felt... addictive at the time, I felt like I was wasting a lot of time I should've spent on solving problems or doing just anything healthier than distracting myself endlessly.

Now, I want to try and rejoin the Discord, without getting addicted this time. Hopefully, that'll work out.
Overfloater2 years ago2022-01-02 16:50:17 UTC 6 comments
I am not sure who will be reading this or even care, but I felt like putting this out there. I have been a member of the community on and off since 2005, and I had my checkered history. I came back a few years ago to try and set things right, and I think I managed to mostly remedy some bad decisions and actions. To try and do right by God, and God's will for my life, and by my own conscience.

However, after I have finished the Pathos Engine, I realized I don't really have any real reason to be in the Half-Life community anymore. I am working on a video game now, not a Half-Life mod. I however still sometimes produce content, like Half-Life models, etc. I might still post that here. However, I have decided it's time I moved on. For this reason I am leaving the Half-Life modding community, hopefully on much better terms than I tried to last time. I have deleted my Discord account also, to focus more on my creative work and job. I do my best creative work in solutide anyway.

I want to say thanks to everyone who was kind to me, and thanks to the people who gave me a second/third chance. I hope people enjoyed the content I created, and will enjoy any future content I create. I doubt I will return again, but if I do, well, we'lll see how it goes. Nothing in life is certain.

And for those I've left without a real explanation, let it be this: Sometimes there's irrevocable differences between two individuals which cannot be resolved, and I might not see a future for said relation. It is not my intention to leave on a bad note. I sometimes just don't see a solution, which might be an error in me.

In the meantime, I will try and realize what God has intended for me to do with the remainder of my life.

Thank you.
Overfloater4 years ago2020-04-01 06:03:56 UTC 3 comments
I'm just writing this journal to inform people that I've made some model packs for Half-Life, Opposing Force and Blue Shift, and released them here on TWHL. The models are completely free of any UV shifting or other such issues. The OpFor Glock has been vastly improved with a bunch of UV mapping issues fixed, and all the packs use the Blue Shift shotgun animations. The MP5 also had the bogus firing animation that was present in both Blue Shift and OpFor removed. The RPG also had the fidget animation fixed, so it no longer only plays halfway through.

Update:
  • The Python had it's speedloader fixed for all versions, and the reload sound plays properly now.
  • The crossbow's clip has been fixed, so the top of it is no longer invisible like before.
HD Gordon hands on LD view models for Half-Life:
https://twhl.info/vault/view/6401

LD OpFor Grunt models and sounds for Half-Life and Blue Shift:
https://twhl.info/vault/view/6402

Fixed and improved LD view models for Opposing Force:
https://twhl.info/vault/view/6403

Fixed and improved LD view models for Blue Shift:
https://twhl.info/vault/view/6404

Some screenshots:
LD OpFor MP5 for Half-LifeLD OpFor MP5 for Half-Life
LD OpFor grunts for Half-LifeLD OpFor grunts for Half-Life
Improved Desert EagleImproved Desert Eagle
Improved GlockImproved Glock
LD OpFor Glock in Half-LifeLD OpFor Glock in Half-Life
Blue Shift Shotgun animsBlue Shift Shotgun anims
Hope you enjoy using these model packs.

Edit: Uploaded the zip files to TWHL's vault