Jump to content

Recommended Posts

5 hours ago, Vandeanson said:

Hiho, me again

 

I would like to share some ideas on the basebuilding mod, but also get your view (as survival scenario users/creators) :

 

#1 issue of AI walking through placed structures:

Will add or at least experiment with an anti AI safezone at your base. 

It could be a dynamic area that grows the more "wall" like structures are placed until a certain max radius. 

Or that the safezone has a low % chance to repell closing in AI that is increased up to 100% depending on how many wall/defensive structures are built.

 

Reppelling could be done via an actual small pushback loop (while within safezone radius) like:

 

_pos = _zombie modeltoworld [0,-1,0] ;

Or sending the AI away with BIS_fnc_scriptedMove; ( thanks @johnnyboy)

 

#2 base system:

In addition or in combination, placed structures could add up to a defensive value for your base (maybe a base must be declared by placing a flag, and doing so will allow you to place certain special structures like containers to store gear, utilities for crafting, respawn tents... while free building anywhere only allows limitted access to some structures) . 

While not at your base, bandit raids could be simulated, and based on your defensive value, each attack has a chance (chance lowered by defensive value) to remove vehicles or containers from your base and destroy some structures, further weakening your base. 

 

Imagine getting back to your base and seeing smoke pillars in the general direction of your camp from far, only to find your home going up in flames! 

 

The chance of an attack could be lowered by not placing your camp in plain open sight but in a deep forrest or by adding camo structures such as camo nettings. 

 

I welcome any idea that might help realizing the above;) 

 

Cheers

Vd

#1

For the AI path the player must place many working gate all around the base and keep enough space between each structure, if not the IA will move trough the wall, but you can't really deal with that.

 

#2

Yeah i think a flag system with few trigger can be a good idea for the defensive vallue, the most simple thing to do its to add an auto turret in the crafting list and add a chance of spawning a small group of AI if there many cargo crate or tent (detected with a trigger), after that the defensive vallue will be like ''auto'' no need to lost a huge amount of time with that.

For exemple if you spawn 5 raider for every 5 cargo crate the defensive vallue will be the ratio ''number of crate/number of auto turret'', so if you got 20 cargo crate and 1 turret the defensive vallue will be 5%, after that depend how the player manage the turret and where the AI come from, so if the turret is well placed and the player got a lot of chance the whole squad of AI will be wiped.

 

Edit : If the AI raider are able to go trough the defensive line and stay alive inside the base more than 10 minutes you can add an explosive satchel randomly inside the base area (random number around the flag) and boom!!!

 

 

  • Like 1

Share this post


Link to post
Share on other sites

The Hotfix is out!

 

Quote

171

Tweaked :
Clean up system now works with scripted weaponholders.
Survival Suits now defined as antirad uniforms.


Fixed :
Fixed undefined variable when spawning wrecks.
Fixed Zeds spawning near killed NPCs.


Credits :
Special thanks to EO, MurazorWitchKing, Tourist & David Deana for their support.

 

Most of the recent issues should be fixed.

The next update will probably focus on fixing and improving the gear module, with more options for DLC content.

  • Like 6
  • Thanks 5

Share this post


Link to post
Share on other sites

And MyST Concept 1 is out too on Patreon!

Although the demo is a fully playable Ravage mission, keep in mind it's bare bones and only shows a small percentage of the final project.

Once complete, Myst will be publicly available to everyone.

  • Like 6
  • Thanks 2

Share this post


Link to post
Share on other sites

@MuRaZorWitchKING - you're right, it would probably take a ton of coding just to get water boil or chop wood,

 

 

I'm just being nostalgic.... good times. 😒

 

Which reminds me, if you played Left 4 Dead, when one of the zombies goes nuts and starts attacking other, and they start beating each other untill one of them dies 😂 imagine that in Ravage...

  • Haha 1

Share this post


Link to post
Share on other sites
On 4/10/2019 at 9:26 AM, haleks said:

The Hotfix is out!

Most of the recent issues should be fixed.

The next update will probably focus on fixing and improving the gear module, with more options for DLC content.

 

Please don't forget about considering these points for the next version:

 

On 4/9/2019 at 4:07 PM, LSValmont said:

 

Hey Haleks, just wanted to drop a couple suggestions for potential optimizations.

 

I was checking out the scripts in the mod and I found several instances where BIS_fnc_selectRandom and BIS_fnc_MP were used.

 

As you probably already know both commands were replaced by the much faster selectRandom and remoteExec/remoteExecCall respectively.

 

Updating these commands shouldn't take to long. Search all .sqf files inside the mod folder, open them all with notePad++ and use the search in all opened documents notepad++ function to search for BIS_fnc_selectRandom and BIS_fnc_MP and replacing them. Shouldn't take long considering there aren't as many as you might think but would certainly speed things up quite a bit specially in MP. 

 

Also the script that adds BIS_fnc_holdActionAdd to objects so players can search things... it would be good to have a % box/option inside the module settings so that mission makers can select a % of objects with added HOLDACTIONS to... currently adding to so many objects can bring down fps in some systems so choosing only to add the holdAction to lets say 50% of candidate objects would be a neat optimization feature.

 

We could set a higher % of possibility of finding items on objects but on a lesser % of objects so players still find the same amount of items even if there is less objects with the holdAction.

 

PS: Another possibility is to have an option to only add the holdAction to an object if the script rolled that the object should have an item. If the script did not add an item to the object then no holdAction is added. (I know this kinda breaks the sense of searching every item but it could really improve performance as I found out in my testings. Whatever option you choose both will increase performance quite a bit (if mission makers do enable them that is).

 

Lastly, please don't forget about the option to disable the reduction of animation speed that happens with high encumbrance. The problem with the  setAnimSpeedCoef command is that it slows EVERY animation and not only the movement animations so it makes the already clumsy Arma 3 controls feel even more like we are driving a tank instead of a soldier on foot.

 

That would be all my suggestions for now, as you already know I am all bout optimizations and I am about to release a MAYOR campaign for Ravage on the following days.

 

Thanks for your continuous and marvelous work on Ravage btw.

  • Like 2

Share this post


Link to post
Share on other sites
5 hours ago, LSValmont said:

 

Please don't forget about considering these points for the next version:

 

 

Thanks for that tip, I'm replacing all those in mine with selectRandom.

  • Like 1

Share this post


Link to post
Share on other sites
On 4/9/2019 at 6:21 AM, acoustic said:

I would like to keep all the persistency underneath the Grad system to avoid conflicts and make things simpler. Food and Hunger are the only 2 things I am not quite sure how to set up.

here is what Adler told me about persistency:


Yes, do it via custom variables. I just checked the Ravage code, the variable names are:

"thirst"

"hunger"

"radiation"

"radTriggers"

"status"

"rad_status"

(Yes, really, no prefix). They are all saved on the player. Saving radTriggers probably makes no sense, all others should be fine. Here is an example:

Spoiler

class CfgGradPersistence { class customVariables { class ravageHunger { varName = "hunger"; varNamespace = "player"; public = 1; }; }; };

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
On 4/9/2019 at 10:07 PM, LSValmont said:

 

Hey Haleks, just wanted to drop a couple suggestions for potential optimizations.

 

I was checking out the scripts in the mod and I found several instances where BIS_fnc_selectRandom and BIS_fnc_MP were used.

 

As you probably already know both commands were replaced by the much faster selectRandom and remoteExec/remoteExecCall respectively.

 

Updating these commands shouldn't take to long. Search all .sqf files inside the mod folder, open them all with notePad++ and use the search in all opened documents notepad++ function to search for BIS_fnc_selectRandom and BIS_fnc_MP and replacing them. Shouldn't take long considering there aren't as many as you might think but would certainly speed things up quite a bit specially in MP. 

 

Also the script that adds BIS_fnc_holdActionAdd to objects so players can search things... it would be good to have a % box/option inside the module settings so that mission makers can select a % of objects with added HOLDACTIONS to... currently adding to so many objects can bring down fps in some systems so choosing only to add the holdAction to lets say 50% of candidate objects would be a neat optimization feature.

 

We could set a higher % of possibility of finding items on objects but on a lesser % of objects so players still find the same amount of items even if there is less objects with the holdAction.

 

PS: Another possibility is to have an option to only add the holdAction to an object if the script rolled that the object should have an item. If the script did not add an item to the object then no holdAction is added. (I know this kinda breaks the sense of searching every item but it could really improve performance as I found out in my testings. Whatever option you choose both will increase performance quite a bit (if mission makers do enable them that is).

 

Lastly, please don't forget about the option to disable the reduction of animation speed that happens with high encumbrance. The problem with the  setAnimSpeedCoef command is that it slows EVERY animation and not only the movement animations so it makes the already clumsy Arma 3 controls feel even more like we are driving a tank instead of a soldier on foot.

 

That would be all my suggestions for now, as you already know I am all bout optimizations and I am about to release a MAYOR campaign for Ravage on the following days.

 

Thanks for your continuous and marvelous work on Ravage btw.

 

Hey mate thanks for the tips. Pretty much all the recursive scripts and loops have been optimized already with the most recent commands - I never bothered updating the "one-time" scripts, but I'll surely make a last sweep.

As for the holdActionAdd for searching loot, there's actually only one instance : it is attached to the player and passed arguments change dynamically depending on the observed object. 😉

 

Dynamic animation speed has been made optional with the 170 update too (see the settings module parameters).

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites
8 minutes ago, zagr said:
Spoiler

class CfgGradPersistence { class customVariables { class ravageHunger { varName = "hunger"; varNamespace = "player"; public = 1; }; }; };

 

Did it work for you? I cant get the custom variables saving to work:(

Share this post


Link to post
Share on other sites
Just now, Vandeanson said:

Did it work for you? I cant get the custom variables saving to work:(

nope, it's dosen't work, it's dosen't even say anything in the RPT file 😕 i'll look into that

Share this post


Link to post
Share on other sites
56 minutes ago, Vandeanson said:

Did it work for you? I cant get the custom variables saving to work:(

we marked that as a bug for now, he told me that he is going to fix it next week

  • Thanks 2

Share this post


Link to post
Share on other sites
2 hours ago, Vandeanson said:

Did it work for you? I cant get the custom variables saving to work:(

Interesting topic, I’ve finally manage to create my own persistent player inventory (very minimalistic, but working) today and was planning to take a look at thirst, hunger etc. tomorrow. Where is the problem: getting the values (from player), saving them, loading them or getting them back to the players?

Share this post


Link to post
Share on other sites
18 minutes ago, whiteface73 said:

Interesting topic, I’ve finally manage to create my own persistent player inventory (very minimalistic, but working) today and was planning to take a look at thirst, hunger etc. tomorrow. Where is the problem: getting the values (from player), saving them, loading them or getting them back to the players?

interesting indeed:) yeah my issue is saving/loading, e.g. player getvariable ["VABB_Wood",0]; Are you working with GRAD too or something else?

Share this post


Link to post
Share on other sites
20 minutes ago, Vandeanson said:

interesting indeed:) yeah my issue is saving/loading, e.g. player getvariable ["VABB_Wood",0]; Are you working with GRAD too or something else?

I‘ve used the Ravage MP Save and GRAD...in combination and both alone. Nothing was really satisfying and GRAD comes with a lot of baggage I don‘t need. When I had to restart the server this week (Ravage update) almost everything was gone. Even loading the player inventory didn‘t seem very reliable.

 

So I came to the conclusion that I have to create my own scripts.

I did some tests on Wednesday, so I guess saving the player loadout to the profile namespace using the BIS function was the easy part. Tomorrow I‘ll have to take a look at setVariable and getVariable - and that really didn‘t work on Wednesday (but it wasn‘t all incompetence, I did make some stupid mistakes too). Anyway, tomorrow I‘ll take a look at the variables again...

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Aaalright figured I could share this version... below you ll find a unpolished demo mission, in case someone feels like testing the basebuilding script=)

 

https://drive.google.com/open?id=1XKucmSXzxZgS32IoMdt_-fr3WDJ72Izg

 

to fill up your mats type this in the debug console

200 call fnc_VABB_AllMats;

 

You will find all required tools in the car.

- Axe: to chop wood

- Shovel: to dig for sand

- hammer: have it equipped to activate basebuilding

- pickaxe: to mine stone

 

Issues:

- distance for lightswitch check to lightsource is too big

- lights are "built" with lights on - need to change that

- sandbag crafting (under refining) missing

- cinderblock crafting (under refining) missing

- to store your gathered mat, you need to build a shed and store stacks of mats there. not all mats have addactions to be stored, but the concept stands

- GRAD persistency system is not fully tuned yet - persistency might not work reliably yet.

 

addon requirements:

- Max Melee Weapons mod

 

if you get around to test it, let me know what you like and what not.

 

cheers

vd

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
3 minutes ago, whiteface73 said:

tomorrow I‘ll have to take a look at setVariable and getVariable

 

Looking forward to your findings!:icon_dj:

Share this post


Link to post
Share on other sites

How do you add individual scopes and suppressors to the loot pool? I already know how to add your own weapons to the Equipment Pool module, but I'm not sure how to add scopes and suppressors.

  • Like 1

Share this post


Link to post
Share on other sites
 
 
 
11 hours ago, ArteyFlow said:

How do you add individual scopes and suppressors to the loot pool? I already know how to add your own weapons to the Equipment Pool module, but I'm not sure how to add scopes and suppressors.


You'll have to open ravage.pbo > code > rvgLoot > lootLists.sqf

There you will find all the loot items mod spawns during the gameplay, divided into Civil, Military, and Industrial. Add classnames of scopes/suppressors into one of these and restart your scenario and you'll find them when you're looting next time. 

  • Like 1

Share this post


Link to post
Share on other sites

@haleks

 

A very general question if I may.. 

 

What are your key fps saving tricks when spawning AI or vehicles, even static objects? 

 

I noticed you mention caching quite a bit but I couldnt really find anything on it, is there a major difference to enabledynamicsimulation + distance based activation/deactivation? 

 

In principle i would spawn AI or objects only, when a player is near, and despawn or disable simulation once the player gets too far away. Is there more that can be done? 

 

Cheers

Vd

 

Share this post


Link to post
Share on other sites
18 minutes ago, Vandeanson said:

@haleks

 

A very general question if I may.. 

 

What are your key fps saving tricks when spawning AI or vehicles, even static objects? 

 

I noticed you mention caching quite a bit but I couldnt really find anything on it, is there a major difference to enabledynamicsimulation + distance based activation/deactivation? 

 

In principle i would spawn AI or objects only, when a player is near, and despawn or disable simulation once the player gets too far away. Is there more that can be done? 

 

Cheers

Vd

 

 

Well it depends; for systems like vehicles and wrecks I save each object (type, position, textures etc) in a global variable : each vehicle is then spawned when a player is detected near its position or deleted once there's nobody around. It's more complex to set up than dynamic simulation but it greatly reduces the number of objects to process.

For furnitures, the system is a bit different since it is a more intensive script : rather than constantly creating & deleting objects, I spawn a pool of simple objects and hide them. As the player moves around structures, furnitures are repositioned instantly : players are under the impression that hundreds of furnitures have spawned in the nearby buildings, when in fact they're constantly watching the same objects (around 30 objects max iirc) being moved around on each frame. The furnitures are handled locally, but loot and weaponholders all are global (that was the trickiest part).

 

I don't really use any caching system for AIs though; those will be affected by dynamic simulation but that's about it. Given the sandbox nature of Ravage, it is difficult to come up with an efficient caching system that doesn't interfere with gameplay.

  • Like 4
  • Thanks 1

Share this post


Link to post
Share on other sites
1 hour ago, haleks said:

 

Well it depends; for systems like vehicles and wrecks I save each object (type, position, textures etc) in a global variable : each vehicle is then spawned when a player is detected near its position or deleted once there's nobody around. It's more complex to set up than dynamic simulation but it greatly reduces the number of objects to process.

For furnitures, the system is a bit different since it is a more intensive script : rather than constantly creating & deleting objects, I spawn a pool of simple objects and hide them. As the player moves around structures, furnitures are repositioned instantly : players are under the impression that hundreds of furnitures have spawned in the nearby buildings, when in fact they're constantly watching the same objects being moved around on each frame. The furnitures are handled locally, but loot and weaponholders all are global (that was the trickiest part).

 

I don't really use any caching system for AIs though; those will be affected by dynamic simulation but that's about it. Given the sandbox nature of Ravage, it is difficult to come up with an efficient caching system that doesn't interfere with gameplay.

 

You sir are a magician! 👏👏👏

Share this post


Link to post
Share on other sites

Hello, apologies for the thread hijack and for probably very elementary questions. I'd just like to say how fantastic I think this mod is, and how much fun I'm having playing it. I just wondered these things:


Is there a kind of basic random scenario I can put on any map? 

 

and

Is it possible to add animals to missions that have already been published? I'd like a bit more wildlife in those yomps across forests and fields! Also, I'd like the hunting aspect of that too, if that's possible? 

 

Sorry if these have been addressed and sorry if they are irrelevant. 

 

Thanks! 

  • Like 1

Share this post


Link to post
Share on other sites
16 minutes ago, sevenape said:

I'd just like to say how fantastic I think this mod

What a friendly hijacker! 🙂

 

16 minutes ago, sevenape said:


Is there a kind of basic random scenario I can put on any map? 

You can place eden editor ravage modules on any map, which will spawn the randon ravage events. Further, you can modify and customize various aspects of ravage in eden editor. Search for ravage tutorial videos by kodabar and prospektmir on youtube for guides. 

 

19 minutes ago, sevenape said:

Is it possible to add animals to missions that have already been published? I'd like a bit more wildlife in those yomps across forests and fields! Also, I'd like the hunting aspect of that too, if that's possible?

Yes, but you need to include additional scripts. I can send you my animal spawner later tonight, which spawns goats and sheep, that can be hunted and butchered with the ravage mod features. George floros has additional scripts that also allow you to get "ravage" meat from other animals. 

 

Welcome to a world where you can make your own survival game:) 

 

Cheers

Vd

 

 

  • Like 4
  • Thanks 1

Share this post


Link to post
Share on other sites
 
 
 
 
 
 
 
6
3 hours ago, Vandeanson said:

🙂

 

You can place eden editor ravage modules on any map, which will spawn the randon ravage events. Further, you can modify and customize various aspects of ravage in eden editor. Search for ravage tutorial videos by kodabar and prospektmir on youtube for guides. 

 

Yes, but you need to include additional scripts. I can send you my animal spawner later tonight, which spawns goats and sheep, that can be hunted and butchered with the ravage mod features. George floros has additional scripts that also allow you to get "ravage" meat from other animals. 

 

Welcome to a world where you can make your own survival game:) 

Thanks so much for the lovely welcome and the help! 

I would love your animal spawner script! Thank you!!!!!

 

Happy surviving!

Share this post


Link to post
Share on other sites
Spoiler

_VD_Animalspawn = {

  waitUntil {count ((allPlayers select {lifeState _x != "DEAD-RESPAWN"}) - entities "HeadlessClient_F") > 0};

  _allplayer = (allPlayers select {lifeState _x != "DEAD-RESPAWN"}) - entities "HeadlessClient_F";
  _player = selectRandom _allplayer;

_pos1 = [getPosATL _player, 90, 700, 0, 0, 0.9	, 0,[]] call BIS_fnc_findSafePos; // the first two numbers are the minimum and maximum range that the animals spawn related to the players position
_type = ["Goat_random_F","Sheep_random_F"] call BIS_fnc_selectRandom; // you can add more animals here - rabbits spawn by default. other animals might not be recognized by ravage as edible

_animals = createGroup east;
 	_animal = _animals createUnit [_type, _pos1, [], 1, "FORM"];
	_animal setVariable ["BIS_fnc_animalBehaviour_disable", true];
	_animal setSpeaker "NoVoice";
  _animal disableAI "FSM";
	_animal disableAI "AIMINGERROR";
	_animal disableAI "SUPPRESSION";
	_animal disableAI "AUTOTARGET";
	_animal disableAI "TARGET";
	_animal setCombatMode "BLUE";
	_animal setBehaviour "CARELESS";
[_animals, _pos1, 250] call BIS_fnc_taskPatrol;



sleep 600; // increase fix amount of time before animals may check for distance to player and wait for despawn.
sleep random 400; // ads a random amount 0-400 to above
waituntil {{_x distance _animal > 900}foreach allplayers - entities [["allplayers"], ["HeadlessClient_F"], true, true]}; // 900 is the distance to player, if the player is more than 900 meters away, and time timers have run out - animals will despawn and respawn closer to you.

{	deleteVehicle _x;
}forEach units _animals;
call _VD_Animalspawn;
};

waitUntil {count ((allPlayers select {lifeState _x != "DEAD-RESPAWN"}) - entities "HeadlessClient_F") > 0};


call _VD_Animalspawn;

 

 

very welcome=)

 

copy + paste the above code in a new file in your mission folder called VD_Animalspawner.sqf.

 

create a file init.sqf in your mission folder or add the following line to it:

 

[] execVM "VD_Animalspawner.sqf";

 

It is a very old script and surely not perfect, but it does the job. let me know if you need help tunig it to your needs.

 

cheers

vd

  • Thanks 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×