Jump to content

Helion - C# (0.9.3.0 6/24 - Goodbye BSP tree rendering)


Recommended Posts

5 hours ago, mmx said:

Would Helion be suited for a TC mod that replaces the weapon sprites with high resolution ones, or even 3D models? What about the enemies?

There is no support for high resolution textures or models.

Share this post


Link to post
Posted (edited)

I've discovered some things when I was playing Doom 2 In City Only (RC6) (maps 26-30) in Helion.

 

The monster infighting behavior is different; despite I hit the enemy first, and when a different enemy's projectile or hitscan hits at least once, the enemy will lose interest in me and focuses on that target instead.
     I've made an example map and tested on Nugget Doom and GZDoom on the infighting part and doesn't do that behavior.

After a monster is killed from infighting, the remaining monster doesn't make a sight sound, it only does it when it sees the player.
     I don't know if the remaining enemy wanders around and doesn't follow me.

Sometimes it makes a different sound pitch by 1 to 2 despite the sound pitch setting is off.

The HUD font's ammo, armor, & health doesn't scale.
helion_20240408_06_04_36_3834.png.6ef5b626290ba19d08356a79f2f6f186.png

 

The intermission screen is tiled in 16:9 instead being the stretched 4:3 intermission screen.

1400407496_PotentionalHelionBug.png.39032a7cff0c3085a3d8645c3c57cd71.png

 

Edited by S3M_XM
Forgot to state of a possible sound pitch bug.

Share this post


Link to post
8 hours ago, S3M_XM said:

I've discovered some things when I was playing Doom 2 In City Only (RC6) (maps 26-30) in Helion.

 

The monster infighting behavior is different; despite I hit the enemy first, and when a different enemy's projectile or hitscan hits at least once, the enemy will lose interest in me and focuses on that target instead.
     I've made an example map and tested on Nugget Doom and GZDoom on the infighting part and doesn't do that behavior.

After a monster is killed from infighting, the remaining monster doesn't make a sight sound, it only does it when it sees the player.
     I don't know if the remaining enemy wanders around and doesn't follow me.

Sometimes it makes a different sound pitch by 1 to 2 despite the sound pitch setting is off.

The HUD font's ammo, armor, & health doesn't scale.
 

 

The intermission screen is tiled in 16:9 instead being the stretched 4:3 intermission screen.

 

 


I have a fix for the HUD. This has shown up in a couple wads.

I see whats going on with the intermission. It always tiles because it assumes that it is a flat like the original game. Boom ports must have something to allow for non-flat images. Should be an easy add so I can put that in.

I also took a look at the monster infighting and the main issue appears to be a mistake in the initialization not setting the monsters threshold to the default threshold.

I should be able to have these addressed in a bug fix release this weekend.

Share this post


Link to post
Posted (edited)

I was playing through Pirate Doom 2 in Helion 0.9.2.8, I like to also report a couple more things during my playthrough.

 

There's an audio issue whenever depending on the music volume is set to, if have it at 3.0 it would change to 30 where I've noticed it did that when I looked at the sound mixer through Windows settings which became bit of a nuisance every time when I go through a different map.

    Just recently, I had it to the music volume setting to 0.0 and it killed the audio on Helion. Regardless if I have at 10.0 in hopes it would play audio again but it didn't. I tried deleting the config file, but there's no audio. But what's odd that there's audio playing if I put the Output device to Speakers and played audio, switching back to headphones and there's no audio. I've also restarted to the computer and deleted the the Helion folder and replaced it and still no luck.

 

The audio track stays from loading on the same map in a different location and doesn't change (this was before it happened).

 

Also the things seem to drop down when on a fast lift despite having Infinitely Tall Things setting on.

 

The vanilla missile height collision's explosion isn't infinitely tall despite the setting on.

 

 

Edit: I've extracted Helion.0.9.2.8.win-x64.with.Runtime.zip and used that instead and the audio is perfectly normal.

 

Edited by S3M_XM

Share this post


Link to post
Posted (edited)

This is an incredibly ambitious and very worthwhile project, and the results so far are pretty impressive.

 

I did, however, get three issues. First, on ultrawidescreen resolutions, getting too close to a wall at an angle allows you to see through the map geometry.

 

Before getting too close:

Spoiler

helion_20240411_12_45_28_9129.png.4cbd1adc215dde9c4247ddf9b714f2aa.png

 

After getting too close:

Spoiler

helion_20240411_12_45_23_1282.png.fd0978c6fd5f1161977161c19e49e193.png

 

In addition, I encountered a crash when testing my own megawad, Dominus Diabolicus. Specifically, there is a Deh_Actor object that's a destructible chair used in some of the levels. In order to avoid situations where the chair is destroyed under a lowering ceiling and turns into red bloody gibs when the ceiling crushes it, it spawns a separate Deh_Actor on death. The entity reacts properly when you shoot it (it spins around a bit), but its death state (likely the spawning of the new object) causes a crash. Below are the error logs - you can recreate this by making a beeline to the northwestern corner in MAP01. This works fine in GZDoom, Woof, DSDA-Doom, and Doom Retro.

 

Spoiler

12:46:28.6231 Fatal error occurred System.NullReferenceException: Object reference not set to an instance of an object.
   at Helion.World.WorldBase.CreateBloodOrPulletPuff(Entity entity, Vec3D intersect, Double angle, Double attackDistance, Int32 damage, Boolean ripper) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1918
   at Helion.World.WorldBase.FireHitScan(Entity shooter, Vec3D start, Vec3D end, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options, Vec3D& intersect, Sector& hitSector) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1301
   at Helion.World.WorldBase.FireHitscan(Entity shooter, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1212
   at Helion.World.WorldBase.FirePlayerHitscanBullets(Player shooter, Int32 bulletCount, Double spreadAngleRadians, Double spreadPitchRadians, Double pitch, Double distance, Boolean autoAim, Func`2 damageFunc, DamageFuncParams damageParams) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1199
   at Helion.World.Entities.Definition.States.EntityActionFunctions.A_FireShotgun(Entity entity) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\EntityActionFunctions.cs:line 1264
   at Helion.World.Entities.Definition.States.FrameState.SetFrameIndexInternal(Int32 index) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\FrameState.cs:line 195
   at Helion.World.Entities.Inventories.Weapon.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Inventories\Weapon.cs:line 82
   at Helion.World.Entities.Players.Player.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Players\Player.cs:line 552
   at Helion.World.WorldBase.TickEntities() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 650
   at Helion.World.WorldBase.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 585
   at Helion.World.Impl.SinglePlayer.SinglePlayerWorld.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Impl\SinglePlayer\SinglePlayerWorld.cs:line 187
   at Helion.Layer.Worlds.WorldLayer.TickWorld(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\Worlds\WorldLayer.Logic.cs:line 117
   at Helion.Layer.GameLayerManager.RunLogic(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\GameLayerManager.cs:line 472
   at Helion.Client.Client.RunLogic() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 134
   at Helion.Client.Client.Window_MainLoop(FrameEventArgs frameEventArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 210
   at OpenTK.Windowing.Desktop.GameWindow.DispatchRenderFrame()
   at OpenTK.Windowing.Desktop.GameWindow.Run()
   at Helion.Client.Client.Run() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 255
   at Helion.Client.Client.Run(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 429
   at Helion.Client.Client.RunRelease(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 377    at Helion.World.WorldBase.CreateBloodOrPulletPuff(Entity entity, Vec3D intersect, Double angle, Double attackDistance, Int32 damage, Boolean ripper) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1918
   at Helion.World.WorldBase.FireHitScan(Entity shooter, Vec3D start, Vec3D end, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options, Vec3D& intersect, Sector& hitSector) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1301
   at Helion.World.WorldBase.FireHitscan(Entity shooter, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1212
   at Helion.World.WorldBase.FirePlayerHitscanBullets(Player shooter, Int32 bulletCount, Double spreadAngleRadians, Double spreadPitchRadians, Double pitch, Double distance, Boolean autoAim, Func`2 damageFunc, DamageFuncParams damageParams) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1199
   at Helion.World.Entities.Definition.States.EntityActionFunctions.A_FireShotgun(Entity entity) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\EntityActionFunctions.cs:line 1264
   at Helion.World.Entities.Definition.States.FrameState.SetFrameIndexInternal(Int32 index) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\FrameState.cs:line 195
   at Helion.World.Entities.Inventories.Weapon.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Inventories\Weapon.cs:line 82
   at Helion.World.Entities.Players.Player.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Players\Player.cs:line 552
   at Helion.World.WorldBase.TickEntities() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 650
   at Helion.World.WorldBase.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 585
   at Helion.World.Impl.SinglePlayer.SinglePlayerWorld.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Impl\SinglePlayer\SinglePlayerWorld.cs:line 187
   at Helion.Layer.Worlds.WorldLayer.TickWorld(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\Worlds\WorldLayer.Logic.cs:line 117
   at Helion.Layer.GameLayerManager.RunLogic(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\GameLayerManager.cs:line 472
   at Helion.Client.Client.RunLogic() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 134
   at Helion.Client.Client.Window_MainLoop(FrameEventArgs frameEventArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 210
   at OpenTK.Windowing.Desktop.GameWindow.DispatchRenderFrame()
   at OpenTK.Windowing.Desktop.GameWindow.Run()
   at Helion.Client.Client.Run() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 255
   at Helion.Client.Client.Run(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 429
   at Helion.Client.Client.RunRelease(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 377

 

 

In addition, in multiple maps, such as MAP02, MAP17, and MAP33, there are Dehacked objects that are hidden behind invisible lifts that play alert sounds when they see the player, then go back to sleep while the invisible lift goes back up. (MAP17 has a playable organ in the final area you can noclip to, while MAP02 has flushing toilets.) In GZDoom, Woof, DSDA-Doom, etc, these go back to sleep properly after playing their alert sound, but in Helion, they continue to play their alert sound in a loop even though they should be back to their initial spawn state.

Edited by bofu

Share this post


Link to post
15 hours ago, S3M_XM said:

I was playing through Pirate Doom 2 in Helion 0.9.2.8, I like to also report a couple more things during my playthrough.

 

There's an audio issue whenever depending on the music volume is set to, if have it at 3.0 it would change to 30 where I've noticed it did that when I looked at the sound mixer through Windows settings which became bit of a nuisance every time when I go through a different map.

    Just recently, I had it to the music volume setting to 0.0 and it killed the audio on Helion. Regardless if I have at 10.0 in hopes it would play audio again but it didn't. I tried deleting the config file, but there's no audio. But what's odd that there's audio playing if I put the Output device to Speakers and played audio, switching back to headphones and there's no audio. I've also restarted to the computer and deleted the the Helion folder and replaced it and still no luck.

 

The audio track stays from loading on the same map in a different location and doesn't change (this was before it happened).

 

Also the things seem to drop down when on a fast lift despite having Infinitely Tall Things setting on.

 

The vanilla missile height collision's explosion isn't infinitely tall despite the setting on.

 

 

Edit: I've extracted Helion.0.9.2.8.win-x64.with.Runtime.zip and used that instead and the audio is perfectly normal.

 

The audio thing sounds strange. The settings page is scaling those settings but the underlying configuration is 0.0 = 1.0. Going to remove that whole thing.

Also the things seem to drop down when on a fast lift despite having Infinitely Tall Things setting on:
I am not understand this one, need some more explanation.

The vanilla missile height collision's explosion isn't infinitely tall despite the setting on:
Are you talking about the explosions ignoring the z value and always damaging as long as they are within the x/y range? This should always happen in Helion and there is no setting for it. I'm not even sure GZDoom breaks this functionality.

Share this post


Link to post
44 minutes ago, bofu said:

This is an incredibly ambitious and very worthwhile project, and the results so far are pretty impressive.

 

I did, however, get three issues. First, on ultrawidescreen resolutions, getting too close to a wall at an angle allows you to see through the map geometry.

 

Before getting too close:

  Reveal hidden contents

helion_20240411_12_45_28_9129.png.4cbd1adc215dde9c4247ddf9b714f2aa.png

 

After getting too close:

  Reveal hidden contents

helion_20240411_12_45_23_1282.png.fd0978c6fd5f1161977161c19e49e193.png

 

In addition, I encountered a crash when testing my own megawad, Dominus Diabolicus. Specifically, there is a Deh_Actor object that's a destructible chair used in some of the levels. In order to avoid situations where the chair is destroyed under a lowering ceiling and turns into red bloody gibs when the ceiling crushes it, it spawns a separate Deh_Actor on death. The entity reacts properly when you shoot it (it spins around a bit), but its death state (likely the spawning of the new object) causes a crash. Below are the error logs - you can recreate this by making a beeline to the northwestern corner in MAP01. This works fine in GZDoom, Woof, DSDA-Doom, and Doom Retro. 

  

  Reveal hidden contents


12:46:28.6231 Fatal error occurred System.NullReferenceException: Object reference not set to an instance of an object.
   at Helion.World.WorldBase.CreateBloodOrPulletPuff(Entity entity, Vec3D intersect, Double angle, Double attackDistance, Int32 damage, Boolean ripper) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1918
   at Helion.World.WorldBase.FireHitScan(Entity shooter, Vec3D start, Vec3D end, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options, Vec3D& intersect, Sector& hitSector) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1301
   at Helion.World.WorldBase.FireHitscan(Entity shooter, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1212
   at Helion.World.WorldBase.FirePlayerHitscanBullets(Player shooter, Int32 bulletCount, Double spreadAngleRadians, Double spreadPitchRadians, Double pitch, Double distance, Boolean autoAim, Func`2 damageFunc, DamageFuncParams damageParams) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1199
   at Helion.World.Entities.Definition.States.EntityActionFunctions.A_FireShotgun(Entity entity) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\EntityActionFunctions.cs:line 1264
   at Helion.World.Entities.Definition.States.FrameState.SetFrameIndexInternal(Int32 index) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\FrameState.cs:line 195
   at Helion.World.Entities.Inventories.Weapon.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Inventories\Weapon.cs:line 82
   at Helion.World.Entities.Players.Player.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Players\Player.cs:line 552
   at Helion.World.WorldBase.TickEntities() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 650
   at Helion.World.WorldBase.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 585
   at Helion.World.Impl.SinglePlayer.SinglePlayerWorld.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Impl\SinglePlayer\SinglePlayerWorld.cs:line 187
   at Helion.Layer.Worlds.WorldLayer.TickWorld(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\Worlds\WorldLayer.Logic.cs:line 117
   at Helion.Layer.GameLayerManager.RunLogic(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\GameLayerManager.cs:line 472
   at Helion.Client.Client.RunLogic() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 134
   at Helion.Client.Client.Window_MainLoop(FrameEventArgs frameEventArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 210
   at OpenTK.Windowing.Desktop.GameWindow.DispatchRenderFrame()
   at OpenTK.Windowing.Desktop.GameWindow.Run()
   at Helion.Client.Client.Run() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 255
   at Helion.Client.Client.Run(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 429
   at Helion.Client.Client.RunRelease(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 377    at Helion.World.WorldBase.CreateBloodOrPulletPuff(Entity entity, Vec3D intersect, Double angle, Double attackDistance, Int32 damage, Boolean ripper) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1918
   at Helion.World.WorldBase.FireHitScan(Entity shooter, Vec3D start, Vec3D end, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options, Vec3D& intersect, Sector& hitSector) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1301
   at Helion.World.WorldBase.FireHitscan(Entity shooter, Double angle, Double pitch, Double distance, Int32 damage, HitScanOptions options) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1212
   at Helion.World.WorldBase.FirePlayerHitscanBullets(Player shooter, Int32 bulletCount, Double spreadAngleRadians, Double spreadPitchRadians, Double pitch, Double distance, Boolean autoAim, Func`2 damageFunc, DamageFuncParams damageParams) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 1199
   at Helion.World.Entities.Definition.States.EntityActionFunctions.A_FireShotgun(Entity entity) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\EntityActionFunctions.cs:line 1264
   at Helion.World.Entities.Definition.States.FrameState.SetFrameIndexInternal(Int32 index) in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Definition\States\FrameState.cs:line 195
   at Helion.World.Entities.Inventories.Weapon.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Inventories\Weapon.cs:line 82
   at Helion.World.Entities.Players.Player.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Entities\Players\Player.cs:line 552
   at Helion.World.WorldBase.TickEntities() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 650
   at Helion.World.WorldBase.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\WorldBase.cs:line 585
   at Helion.World.Impl.SinglePlayer.SinglePlayerWorld.Tick() in C:\Users\stlau\Documents\GitHub\Helion\Core\World\Impl\SinglePlayer\SinglePlayerWorld.cs:line 187
   at Helion.Layer.Worlds.WorldLayer.TickWorld(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\Worlds\WorldLayer.Logic.cs:line 117
   at Helion.Layer.GameLayerManager.RunLogic(TickerInfo tickerInfo) in C:\Users\stlau\Documents\GitHub\Helion\Core\Layer\GameLayerManager.cs:line 472
   at Helion.Client.Client.RunLogic() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 134
   at Helion.Client.Client.Window_MainLoop(FrameEventArgs frameEventArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 210
   at OpenTK.Windowing.Desktop.GameWindow.DispatchRenderFrame()
   at OpenTK.Windowing.Desktop.GameWindow.Run()
   at Helion.Client.Client.Run() in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 255
   at Helion.Client.Client.Run(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 429
   at Helion.Client.Client.RunRelease(CommandLineArgs commandLineArgs) in C:\Users\stlau\Documents\GitHub\Helion\Client\Client.cs:line 377

 

 

In addition, in multiple maps, such as MAP02, MAP17, and MAP33, there are Dehacked objects that are hidden behind invisible lifts that play alert sounds when they see the player, then go back to sleep while the invisible lift goes back up. (MAP17 has a playable organ in the final area you can noclip to, while MAP02 has flushing toilets.) In GZDoom, Woof, DSDA-Doom, etc, these go back to sleep properly after playing their alert sound, but in Helion, they continue to play their alert sound in a loop even though they should be back to their initial spawn state. 


Dang, Helion taken down by chairs.

I see what the problem is with chairs. The alert sound playing in a loop is going to take some digging. Thanks for the details, I should be able to have these fixed soon.

Share this post


Link to post
52 minutes ago, hobomaster22 said:

Also the things seem to drop down when on a fast lift despite having Infinitely Tall Things setting on:
I am not understand this one, need some more explanation.

The vanilla missile height collision's explosion isn't infinitely tall despite the setting on:
Are you talking about the explosions ignoring the z value and always damaging as long as they are within the x/y range? This should always happen in Helion and there is no setting for it. I'm not even sure GZDoom breaks this functionality.

 

I've made an example map on those two issues. example.zip

 

Given in this image below, the things drop down on a lift in "turbo" speed option from a Generalized Action in Helion.

helion_20240411_04_09_36_2893.png.6bfbd56ed368a6fb9ee7caa82000381b.png

 

    Where GZDoom even with and without the infinitely tall things settings doesn't do that.


Yes, the Z value ignores it as the northeastern part of the room gives an example, below is a pinky demon with 384 units down below where a explosion can't be reached without having an infinite Z value. GZDoom has a "Use original Doom explosion behavior" setting that the z value is infinitely tall for explosions as vanilla does.

Share this post


Link to post

I'm also experiencing issues with UMAPINFO/ZMAPINFO boss death actions. It may be because they're Deh_Actor entities, but I'm not able to get them to trigger. I'll try to do some digging.

Share this post


Link to post
Posted (edited)
20 hours ago, bofu said:

I'm also experiencing issues with UMAPINFO/ZMAPINFO boss death actions. It may be because they're Deh_Actor entities, but I'm not able to get them to trigger. I'll try to do some digging. 

I had some time this morning to look at this and assumed the issue was with Dominus Diabolicus MAP30. The main issue is that ZMAPINFO is prioritized higher than UMAPINFO in Helion, but the equivalent functionality to handle custom SpecialActions to match UMAPINFO bossaction is missing. I will add that functionality. It also appears that for medium difficulty the final area has both the normal archvile and the custom archvile set for medium and they are overlapping.

Edited by hobomaster22

Share this post


Link to post
1 hour ago, hobomaster22 said:

I had some time this morning to look at this and assumed the issue was with Dominus Diabolicus MAP30. The main issue is that ZMAPINFO is prioritized higher than UMAPINFO in Helion, but the equivalent functionality to handle custom SpecialActions to match UMAPINFO bossaction is missing. I will add that functionality. It also appears that for medium difficulty the final area has both the normal archvile and the custom archvile set for medium and they are overlapping.

Thanks for that last catch - it's unrelated to boss specials, but still an embarrassing oversight!

Share this post


Link to post
On 12/1/2022 at 4:26 PM, JustAthel said:

the movement in this port feels... off.

I noticed a problem with the view- and weapon-bobbing - if you start out running north-south, there is a smooth transition into the bob, but if you start out running east-west, the transition is quite abrupt and jerky. This might be part of the reason why movement feels wrong.

 

Also make sure you turn mouse interpolation off (unless you're fond of extra input latency). It's on by default

Share this post


Link to post
42 minutes ago, dr.dendrite said:

I noticed a problem with the view- and weapon-bobbing - if you start out running north-south, there is a smooth transition into the bob, but if you start out running east-west, the transition is quite abrupt and jerky. This might be part of the reason why movement feels wrong.

 

Also make sure you turn mouse interpolation off (unless you're fond of extra input latency). It's on by default

It appears you are correct. I normally don't play with bobbing, but I did some moving around with it on and it does seem off. I will also disable mouse interpolation being on by default in the next update, not sure how that happened but it seems like a mistake.

Share this post


Link to post

Helion 0.9.2.9
 

Spoiler

Added savedir argument to write/load saves from specified directory. Matches savedir command from GZDoom. (PR 564 from 72hr)
Added use original doom explosion behavior compat option. Disables all z checking for all explosions and not just things flagged with OLDRADIUSDMG.
Added separate viewbob/weaponbob variables and removed single movebob configuration. User's existing movebob values will migrate to the new viewbob and weaponbob variables.
Fixed recursive sound function check that was broken from optimization in 0.9.2.8.
Updated vanilla movement physics compatibility to correctly never clear velocity when in contact with another thing. Fixes vanilla compatibility for KDiKDiZD.
Fixed issues with large HUD font numbers being cut off. Fixes Doom 2 in City Only font.
Added check to only tile text intermission backgrounds if 64x64. Fixes Doom 2 in City Only text intermission.
Removed configuration scaling for certain variables to match config.ini.
Fixed physics to always stick things to floor on Doom format maps.
Fixed reset target when thing goes back to look state. Fixes Dominus Diabolicus alert sounds.
Fixed lookup for getting dehacked actor for boss actions.
Implemented generic special actions for ZMapInfo.
Added checks for calculating zNear with widescreen values to fix wall rendering issues when close.
Fixed calculation for setting bobbing.
Set mouse interpolation to be off by default.
Sounds are cached to prevent stutters when first loading during gameplay.
All skies and animations are cached on map start to prevent stutters when new skies are loaded in from triggering specials. This fixes cases in Doom 2 in City Only where triggering specials would cause large stutters while the skies were processed and loaded.


For anyone that has already setup Helion, you will likely want to go into the mouse settings and turn off interpolation if you have not already. This setting was mistakenly on by default.

Thanks to @CacoKnight @S3M_XM @bofu @dr.dendrite for the reports. This has been extremely helpful in making Helion a better port.

Share this post


Link to post
Posted (edited)

Please note that building Helion on Linux now requires .NET 8:

sudo apt install dotnet-sdk-8.0 libfluidsynth-dev libopenal-dev

(Have submitted an issue requesting update of build instructions)

Edited by Martin Howe

Share this post


Link to post
47 minutes ago, Martin Howe said:

Please note that building Helion on Linux now requires .NET 8:


sudo apt install dotnet-sdk-8.0 libfluidsynth-dev libopenal-dev

(Have submitted an issue requesting update of build instructions)

I've been in the middle of upgrading to .NET 8 and cleaning up some things. Previously, the project was flagged to allow preview versions that would allow for features outside of the targeted version. This was required early on for our development when .NET core was new and was forgotten about. I just pushed all my changes to dev should everything should correctly target .NET 8.

Share this post


Link to post
Posted (edited)

Was building on a new computer and dotnet 7 complained about the new array style syntax, that Google identified as collection expressions, that's what tipped me off. 

Edited by Martin Howe

Share this post


Link to post

I forgot to post here but when I was playing PUSS33 (DIE ROWDY) (Beta 2) about a week ago. And just a bit to point out in the RC1 that got released today; certain textures in the wad (BIGBRIK2, BIGDOOR2, TAPE01, PRESENTS, PUSS33, & 33LOGO, 33CREDS, 33MAPPER, & 33THANKS texture lumps) act like a slideshow in Helion, other source ports don't seem to do that.

 

After completing in MAP42, it doesn't take you the text screen and to the end cast, instead you're stuck in position where you exited from.

 

The title levels for the intermission don't appear after MAP32

    After MAP32, the music tracks can't be found.

 

Share this post


Link to post
20 hours ago, S3M_XM said:

I forgot to post here but when I was playing PUSS33 (DIE ROWDY) (Beta 2) about a week ago. And just a bit to point out in the RC1 that got released today; certain textures in the wad (BIGBRIK2, BIGDOOR2, TAPE01, PRESENTS, PUSS33, & 33LOGO, 33CREDS, 33MAPPER, & 33THANKS texture lumps) act like a slideshow in Helion, other source ports don't seem to do that.

 

After completing in MAP42, it doesn't take you the text screen and to the end cast, instead you're stuck in position where you exited from.

 

The title levels for the intermission don't appear after MAP32

    After MAP32, the music tracks can't be found.

 


 

Thanks for the report. I have fixes for the texture animations and MAP42 endcast.

I'm not able to reproduce the last two issues. The music and and their intermission screens seem to working fine testing MAP33, 34, and 35. So that's interesting.

Share this post


Link to post
  • 2 weeks later...
On 5/17/2024 at 3:57 AM, Darkcrafter07 said:

Chainsaw is still a bit weird

 

 

Last missing piece appears to be the just attacked flag that Doom sets. The player think modifies the tick command for the player to pull them forward when it’s set. 

Share this post


Link to post

It's only like it disables the knock back, it always felt to me like wheh you saw an enemy, the player gets pulled towards that monster.

Share this post


Link to post
Posted (edited)
52 minutes ago, Darkcrafter07 said:

It's only like it disables the knock back, it always felt to me like wheh you saw an enemy, the player gets pulled towards that monster.

Getting pulled in is the normal behavior.  Just try locking onto a pinky or something tougher with the chainsaw and walking backwards.  The difference between Helion and other ports here is notable.

Edited by TruthInFiction

Share this post


Link to post
52 minutes ago, Master O said:

@hobomaster22 Can you add support in Helion for idclev in order to change to specific levels in a wad?

It's always been there, I just tested it and it worked

Share this post


Link to post
  • 3 weeks later...

Finally got to play some more, and wow, this has made a lot of progress!

 

The only bug I was able to run into while playing through all of Dominus Diabolicus again was an MBF thing:

 

Spoiler

I have a non-MISSILE object with BOUNCES that relies on the TOUCHY flag to imitate a pickup, but then plays a death animation and disappears when the player picks it up. It can be found in MAP33 in three out of four of the sectors marked as secret.

 

This is fantastic work. I'm going to start putting this through its paces with some other wads and mods.

Share this post


Link to post
11 hours ago, bofu said:

Finally got to play some more, and wow, this has made a lot of progress!

 

The only bug I was able to run into while playing through all of Dominus Diabolicus again was an MBF thing:

 

  Hide contents

I have a non-MISSILE object with BOUNCES that relies on the TOUCHY flag to imitate a pickup, but then plays a death animation and disappears when the player picks it up. It can be found in MAP33 in three out of four of the sectors marked as secret.

 

This is fantastic work. I'm going to start putting this through its paces with some other wads and mods.

Thanks! I just fixed the issue you reported. I've been testing for the next release and it has a lot of great things I'm excited for. Should be out this weekend.

Share this post


Link to post

Helion 0.9.3.0

 

Spoiler

Upgraded to .NET 8
Improved build processes. (#571)
Helion will attempt to read Steam registry path on Windows for IWAD detection. (#572)
Significant improvements to map reload times when reloading the same map.
Performance improvements in flat/line rendering calculations. Significantly improves performance for maps that have a lot of dynamic rendering.that includes moving sectors, scrolling lines and floors.
Performance improvements in sight and shoot traversal.
Performance improvements in sprite rendering.
Performance improvements on static geometry rendering where options are packed into a single float to get the size in a more optimal size range for GPUs.
Performance improvements with monster movement and improvement for 3D checks when things overlap in the 3D space, e.g. cacodemons stacking on top of each other.
Significantly improved sight checks for large maps where sight checks fail early (e.g. Doom 2 in City Only MAP23)
Implemented different crosshairs and options.
Implemented vile ghost, explosion, sector sound, and final doom teleport compatibility options.
Various improvements for allocations that were leaking to the garbage collector.
Sectors are linked to the blockmap by their island bounding box instead of the sector bounding box.
Added findkeys and findkeylines commands to highlight in automap.
Added complvl command to view/set the complvl, complvl none will reset to user defaults.
Added option to disable horizontal autoaim for projectiles.
Sound audio will automatically change when the default audio devices changes where previously only music would switch.
Improvements for loading and re-using skies if the map hasn't changed.
Added checks to support freedom iwads.

End game intermissions tile background using doom resolution.
Added checks for min/max pitch to fix jittering issues when attempting to look straight up or down.
Fixed missing check for fixed height when creating space character for fonts.
Update font scaling to work per character instead of using the maximum height that can cause issues with single characters having very large heights.
Fixed two-sided lines not seen on automap to match one-sided color.
Fixed dehacked text parsing to include newlines for text screens when the line was empty.
Gibbing damage set to 10000 to match doom behavior. Was causing performance issues in Smooth Doom 21 that would prevent gore from spawning when things were gibbed in this manner. (Fixes performance drop in Doom 2 in City Only MAP23 on start where monsters are in kill sector)
Fixed issue with endgame that would freeze the level if the cluster definition did not exist. (Fixes endgame issues with Die Rowdy)
Added check to skip endgame text display if there was no text specified (Fixes endgame issues. with Die Rowdy)
Added check to skip over bad textures for animations. (Fixes anmation issues with Die Rowdy)
Fixed missing A_FaceTarget call in A_SkelMissile.
Fixed STARMS to draw from hard-coded top offset to match doom behavior.
Fixed damage end to not exit unless it damages the player match doom behavior.
Fixed rendering issue where a sector is moving and the controlling transfer heights sector is also moving but completes first. (Archvile section in Doom 2 in City Only MAP23)
Fixed rendering issue with a moving sector that had upper flood filling and sky rendering that would cause the sky to stop rendering.
Fixed incorrect music in E1M6 of DOOM. (#576)
Fixed issue where a monster that was killed in a monster closet can spawn in from a scrolling floor but had incorrect flags set.
No monsters and fast monster options are serialized to save games.
Fixed monster movement issue where a monster would attempt to walk on top of another thing if the z values are equal
Fixed concurrency issue that could cause a crash when loading a map with the sound engine.
Fixed dehacked parsing to ignore the rest of the line when completed.
Fixed endgame text parsing to look for both \n and escaped \n.
Updated line rendering to use two-sided rendering path when a line is flagged as two-sided even if it doesn't have a back side to match doom rendering behavior.
Fixed initialization of sky animations that would incorrectly use translated textures from the animations.
Fixed non-solid touchy objects being ignored in physics overlap check.
Fixed sprite z-fighting check to correctly interpolate between current and previous view normal.


There is a lot in this release. A ton of performance enhancements, new features and bug fixes.

The first thing you will notice is an improved crosshair. Helion now has different crosshair types and options to play with including different colors, scaling, and transparency.

1504781424_screenshot_HelionReleaseTest_DOOM.png.23cf09efcabf23454306523deebb5c3d.png

The performance for CPU runtime handling and GPU increase for static data has really added up and make up for significant improvements, most noticeably on low end hardware. The Radeon HD8400, which is the current low end benchmark GPU from 10 years ago really benefits from these changes. I haven't done a full benchmark for this release but Summer of Slaughter MAP32 previously benchmarked at 52FPS overlooking the map, and would drop to about 40FPS during gameplay. With these changes it stays consistently above 50FPS during gameplay. You could play all of Sunder on this 10 year old garbage hardware at this point.

More compatibility support: vile ghost, explosion, sector sound, and final doom teleport compatibility options.

There was some great pull requests in this release as well. Not sure if they are members here, otherwise I would note them here. The relevant pull request links are in the change log above.

Share this post


Link to post

Good job. 

 

Although, for next version, maybe you can add description to every setting available. 

 

What is it Monster Hunter Detection?

And bump use?

And in the comp. options, vainilla movement physics? In fact, one of the first things i noticed upon loading Helion was that the movement was 'off' (accustomed as I am to GZDoom)

 

etc etc

Share this post


Link to post
8 minutes ago, Turin Turambar said:

Good job. 

 

Although, for next version, maybe you can add description to every setting available. 

 

What is it Monster Hunter Detection?

And bump use?

And in the comp. options, vainilla movement physics? In fact, one of the first things i noticed upon loading Helion was that the movement was 'off' (accustomed as I am to GZDoom) 

 

etc etc


Currently the descriptions only exist in the console. So if you type game.bumpuse in the console and press tab you will get a description. This one only exists so my daughter can play doom with nothing but moving the mouse :)

 

Monster closet detection checks for monster closets and minimizes their affect on the CPU by running dumbed down routines and won't render them until they spawn.

Vanilla movemement physics emulates the vanilla behavior where the player's velocity isn't cleared when bumping into things, where in GZDoom it correctly applies the slide physics when you hit a wall.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...