AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Code Snippets/Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=83)
-   -   ROG - A better random origin generator[NO HIDDEN ZONES UPDATE] (https://forums.alliedmods.net/showthread.php?t=309495)

Garey 09-12-2018 16:17

Re: ROG - A better random origin generator[UPDATED]
 
About steep surfaces: You always can do something like that:
PHP Code:

         //Detect the floor, so we don't spawn the player in air
        
FloorOrigin[0] = RandomOrigin[0]
        
FloorOrigin[1] = RandomOrigin[1]
        
FloorOrigin[2] = -8192.0
        
        engfunc
(EngFunc_TraceLineRandomOriginFloorOriginDONT_IGNORE_MONSTERS00)
        
get_tr2(0TR_vecEndPosRandomOrigin)
        
get_tr2(0TR_vecPlaneNormalplaneNormal)
        
// If we hit a steep plane
        
if(planeNormal[2] < 0.7)
            continue; 


HamletEagle 01-17-2019 09:16

Re: ROG - A better random origin generator - NEW UPDATE
 
Update:
-made rog almost twice as fast as it was before. For example, in de_mon, it took 207ms to generate all the points, now it takes 100ms.
-previously it was 4.3x faster than superspawn, now it is 7.8x faster than SS.
-it generates the same amount of points, but in half the time it took before.

-added a check to prevent spawn points on top of entities(this should filter boxes like the ones from dust2 bombsite).
-added the same check that is used in regamedll for steep surfaces. If the ground is too step and the player would start sliding down, then that point will not be taken into account.

I have more updates planned, which should hopefully filter even more tricky points(like spawning in places that are too high).

JocAnis 01-17-2019 10:36

Re: ROG - A better random origin generator - NEW UPDATE
 
is it possible to prevent spawning player to 'weird' places on maps...like on awp_india (you have a room under the center of the map, where you cant go nowhere from it...i think thats the main problem (and only?) with this module

klippy 01-17-2019 11:04

Re: ROG - A better random origin generator - NEW UPDATE
 
You would need a to pathfind from the generated point to a player spawn point to verify that the generated spot is valid (that means it's in the playable area).

HamletEagle 01-17-2019 11:19

Re: ROG - A better random origin generator - NEW UPDATE
 
Quote:

Originally Posted by JocAnis (Post 2635158)
is it possible to prevent spawning player to 'weird' places on maps...like on awp_india (you have a room under the center of the map, where you cant go nowhere from it...i think thats the main problem (and only?) with this module

Read the previous replies. But yeah, it's what klippy said.
I want to keep it fast, and adding a pathfinding algorithm is against this purpose.
This is exactly why I added an option to define your own conditions for origins. Just get the origin of that room and tell rog to ignore it.

HamletEagle 02-16-2019 11:44

Re: ROG - A better random origin generator[NO HIDDEN ZONES UPDATE]
 
Update: added logic to prevent points from being generated inside hidden map zones(like the ones from de_mon/de_dust2/awp_india). I can not guarantee the algorithm is fail proof, so if you find a map where it doesn't work properly, please let me know so it can be fixed.

This should come with a minimal speed loss(few seconds in most maps) and with a decrease in generated points(firstly because hidden points are excluded and secondly because the algorithm will flag some valid points as being in a hidden area - mostly in indoor maps).
If you find a map where it generates an absurdly low amount of points also please let me know.

The benchmarks were not updated because I'm too lazy. I should update them soon.

NOVA GAMING 08-26-2020 03:05

Re: ROG - A better random origin generator[NO HIDDEN ZONES UPDATE]
 
Quote:

Originally Posted by HamletEagle (Post 2639917)
Update: added logic to prevent points from being generated inside hidden map zones(like the ones from de_mon/de_dust2/awp_india). I can not guarantee the algorithm is fail proof, so if you find a map where it doesn't work properly, please let me know so it can be fixed.

This should come with a minimal speed loss(few seconds in most maps) and with a decrease in generated points(firstly because hidden points are excluded and secondly because the algorithm will flag some valid points as being in a hidden area - mostly in indoor maps).
If you find a map where it generates an absurdly low amount of points also please let me know.

The benchmarks were not updated because I'm too lazy. I should update them soon.


Sir , I find a Hidden Map zone in cs_assault (Original CS Map) , i was using ROG for my Teleport Machine plugin which teleport you To Some Origins

https://i.imgur.com/ZFjU2ro.jpg

HamletEagle 08-26-2020 05:52

Re: ROG - A better random origin generator[NO HIDDEN ZONES UPDATE]
 
This isn't exactly the type of "hidden zone" ROG was updated to detect. It detects mostly rooms under/above the map, not areas that are connected to the map but separated by an invisible wall.
As I said before, to filter these places properly we need to run a pathfinding algorithm and see if the zone can be reached or not. While a very inneficient version can be easily implemented, it will make the include extremely slow, probably to the point where it's unusable. Better implementations will require a module and a lot of work.

Natsheh 01-29-2021 15:36

Re: ROG - A better random origin generator[NO HIDDEN ZONES UPDATE]
 
I think the Float:MinDistance doesn't work quiet well, i tried spawn some boxes around the map and each box have 600.0 unit distance between the other, but it fails and spawns nearby.

Edit : I might give it a try and try to fix the code, but i don't promise anything :)

Edit #2: seems like the problem was caused because i was using the origin check function to insert valid origins, because the check distance function is after check function.

Natsheh 12-25-2021 06:21

Re: ROG - A better random origin generator[NO HIDDEN ZONES UPDATE]
 
1 Attachment(s)
If its possible to validate the origins and not spawn them outside of the maps for maps that have a skybox around the whole map,
and also if you can add a safety check for the player not spawn inside ( trigger_hurt, trigger_teleport, trigger_push )

Preview of the issue

Attachment 192788


All times are GMT -4. The time now is 01:14.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.