-
Posts
278 -
Joined
-
Last visited
Reputation Activity
-
Markokil321 reacted to striker in [Project / WIP] dayzChunks - Load Objects in a chunk style as opposed to all at once
Hey everyone,
Thanks for your interest, ill be releasing some code tomorrow. :lol:
I have to get the Build Vectors update out first, then Ill be moving onto this project more. :)
@f3cuk, I seen your work from Sandbirds link in his post, and mixing the too scripts should be a really good mixture. Your script handles objects that can be spawned client side and my script to handle objects that need to be synced across all clients. So, in basic terms, mine will handle Vehicles, Storage, Doors, and the Dynamic Debris stuff, while yours handles Map Addons, and most Modular Building Objects. We can discuss more if you would like.
striker
-
Markokil321 reacted to Defent in custom donator traders need help
Can you see anything from that high horse of yourse?
-
Markokil321 got a reaction from Tricks in [Project / WIP] dayzChunks - Load Objects in a chunk style as opposed to all at once
Fuck yes, DO IT! :P
Got me testserver on standby, lol
-
Markokil321 reacted to hogscraper in A3 Epoch Headless Clients : Walkthrough UPDATED:Dec 22nd
Updated Dec 22nd: https://github.com/hogscraper/A3_EPOCH_Headless_Client I have created a repo on Github with this code to make setting it up a little easier. The repo contains the bare essentials to get this up and running but has a crippled AI system. When I put that in the code below, it was crap and was only intended as a generic stand in so server admins would know how to get other AI mission systems up and running. What I overlooked was the lack of any decent ones being out when I first posted this. To force the issue I went ahead and deleted most of what was in the AI_Init code so it still spawns a few AI, but that's it. I want to take the focus in this thread from the AI aspect and stay with just the HC stuff. This repo is still being put together, but it has what you need to reference so you can get your server up and running a little easier. Updated Dec 10th: I added a section below on processor affinity and how to set this up with multiple instances of Arma. thanks for the heads up axeman! This isn't for the light of heart. If you feel confident in your ability to follow simple instructions, hopefully this tutorial will help you out. If you get to a point and have to ask yourself, "well how do I do that?" you need to use google. There are tons of tutorials out there on any instruction I give below and they are out of the scope of this tutorial. I had a friend and fellow server admin run through this on a basic A3 and Epoch install on his box and he was able to get it up and running no problems, (other than the BEFilters mentioned below). SECTION 1: SETTING UP A HEADLESS CLIENT: This has become so much easier lately as BI have recently included HC tech inside A3. It really is a much easier process than it ever has been in the past. Because of this, I will be redirecting you to a tutorial they made to get you started. You can use 127.0.0.1 wherever you find an ip address, (xxx.xxx.xxx.xxx on the tutorial page), if your sever is local to the headless client. The best part is, you no longer need another cd key for a headless client in A3. Read this, and when you are done, I will fill in the blanks with what's relevant to Epoch: https://community.bistudio.com/wiki/Arma_3_Headless_Client At this point you will have an edited mission.sqm with a new unit called headlesshogs_01, (or whatever you called yours). I added a number to my name so I have the option to create more than one at a later date if I need it. You can reference your headless client later to add even more to it by referencing the name you gave it. In most cases, AI systems are built so you only need to fire and forget but its worth noting if you wish to take this concept further. Create a new text file in your A3 base folder and rename it Headless_Client_01.bat Inside that file paste this line: arma3server.exe -client -connect=127.0.0.1 -mod="@epoch"; This bat file will create a new, dedicated client and connect it to your server, joining the first free headless client slot it can find. If you use a master bat file to run your server you will want to have this code called after BEC has loaded. If you are running them manually, the order is Redis-(wait for load to complete) server launch BEC launch(waits on its own for server launch to complete before running) HC launch(best to wait until BEC is completely loaded before running) Processor Affinity: I'm a Windows user so these instructions are valid for that system. Before you begin, you should have some background knowledge about the processor you are running your server on. How many cores it has, which cores if any are hyperthreading cores, etc. This information will help you determine which cores you want to run which processes so that you have a better idea on what to substitute for the generic values in this tutorial. When you run multiple instances of any Arma product on the same box, its always best to assign each process to a separate cpu core. This can help get ahead of bottlenecks when the server and the HC are both running code at the same time. You can manually adjust these values through Task Manager but its much easier to just add the information directly to your batch files. If you edit your batch file you only need to edit the beginning of the line: start /AFFINITY # "arma3server.exe" ... the rest of your start parameters as they already are The # above are the cpu cores you want to utilize but its a little tricky determining, as its a hex value of a binary number. Your processors need to be arranged with the highest number first. So eight cores would be written down as 87654321 and four cores would be 4321 Once you have written the number of cores you have in that format you will need to create a binary number using the cores you want to run on. If we wanted this process to use cores 8,6,4 and 2 we would utilize the binary like: 87654321 10101010 Just mark a 1 under any core number you want to use and a zero under any that you don't. This new binary number needs to be converted into a hexadecimal value. A quick way to do that is open windows calculator. Click View and choose Programmer Click the radio button for Bin, (putting the calculator into binary mode), and enter the number you obtained above. After you hit the last digit you can click the radio button for Hex and it will convert the number. So, for the above 10101010 we would get AA as the hex value to substitute for #: start /AFFINITY AA arma3server.exe ... the rest of your start parameters as they already are With the server assigned to the cores we wanted the headless client can be done the same way. If the HC only needs to be run on core 3, 87654321 00000100 You get a hex value of 4 and our HC batch line becomes: start /AFFINITY 4 arma3server.exe ... the rest of your start parameters as they already are You can verify that the OS is running the process on the correct cores by opening Task Manager, right click the process in question and choose Set Affinity. The list it shows you has them ordered with cpu0, (first core) at the top and the list descending to the last core. Ensure you are using values that you determine are proper for you setup. On my test machine I run the server on 4,3 and 2 and the HC on 1 but haven't noticed much difference whether I give each process one, two or three cpus. This is part of the tutorial where you will need to look at what you have and figure out what's going to work best for you. Now we have a headless client that will connect to our server so we need to create an init.sqf to handle the HC. Head into your MPMissions folder and find which mission you are calling from within your config.cfg. The default is Epoch.Altis.pbo. You will need to depbo the file and it will create a folder called epoch.Altis with a mission.sqm and a description.ext inside. If you edit the mission.sqm and it is code instead of plain text you depbo'd the file incorrectly. PBO manager will do this incorrectly so you need Mikero's tools to get a proper unpbo in many cases. In your new mission folder, you need to create a file named init.sqf. Inside that file place: if !(hasInterface or isServer) then { HeadlessVariable = true; publicVariable "HeadlessVariable"; execVm "AI_Init.sqf"; }; "GlobalHint" addPublicVariableEventHandler { private ["_GHint"]; _GHint = _this select 1; hint parseText format["%1", _GHint]; }; The called file above, (AI_Init.sqf), is whatever init file you use to get your AI started. At this point, your server will have a headless client that will run any AI scripts you would like. The added bit is so the headless client can communicate with the players and let them know when a new AO spawns. The added benefit to this system is that, if the headless client fails to connect, it will continue to retry and the AI system will spawn whenever it finally joins the server. I didn't want the server to run the code as I have the HC for a lot more than one mission so I set this up with the thought in mind that I wanted as much as possible to be removed from the server's overhead. While following this section, you may get kicked when you connect as client. There are issues with Arma3 and how it creates the current mp mission in your appdata folder so that if your headless client connects, the next client from that same machine to connect may try to overwrite the current_mission.pbo. Since that will fail it will kick you back to the server select screen. All you have to do is reconnect. Once connected/disconnected it will assume you already downloaded the mission and will no longer try to re-write the file, allowing your client to connect. SECTION 2: GETTING AI TO SPAWN UPDATE: From user Defent, it appears that the Vehicle_Simulation.FSM is deleting any vehicle, (AI included), that was not spawned by a logged in client. That likely means that this code will not work running solely on the server. I have personally verified that when I run this code exactly as written from a headless client it works fine, but when ran by the server it deletes the ai within seconds. We will have to wait on a workaround from the Epoch devs that will allow us to move this code server side in order to do that. I will update this again once we figure out what array or variables are protecting server spawned vehicles. For this part, I've seen a lot of posts about people having issues with ai being deleted. I had trouble with this as well until I changed a lot of the variables. Certain models will be deleted but I found that creating soldiers and removing their uniform seems to allow them to stick around. I am creating a global array, placing all the ai into it and making that a public variable. I had originally did this because I was using modified epoch code in a separate pbo on the server but didn't feel it was appropriate to teach that route since the current restrictions say releasing that modified code is bad. I mention this because I really do not know what affects the ai during cleanup exactly, but it seems to have multiple parts. Certain models I spawn seem to instantly disappear while others will stick around for a few seconds, fire their guns, then disappear. Since I don't know what exactly fixed the issue I wanted to post the code I am using as it stands right now and maybe we can figure it out as a community. What I am posting works for me, on a private server, but I wanted some testing done. I made all of the ai in a group from side RESISTANCE and made all of my triggers pick up side GUE. This mission will make an AO, somewhere on the map, create a red marker and let all players know. After the mission starts, if thirty minutes goes by and there are still bandits in the AO, the AO ends with a hint saying they took off and the marker will turn yellow. 120 seconds later another AO will picked randomly from the list and continue. If players hunt down the bandits and kill them all before the thirty minute timer runs out, the AO marker turns green and an ammo box spawns that will last ten minutes before it it deleted. 120 seconds later another AO will be chosen and so on. Each AO that is used is removed from the list and if the list runs through all ten missions it will reset to full and start over. Inside the mission folder you created for init.sqf you need to make another file called AI_Init.sqf and inside that file place all of the spoiler code inside.
The above code has positions that are relevant to a custom map I am working are and the AO's themselves have had their text chopped down to something generic. Since this is part of a much larger mission system I am working on I wanted to make a generic version that you could tailor to your own tastes. Pretty much anything you could want just needs to be added to the appropriate section or you could even work out DZMS. I previously got permission from Vampire to modify and use his mission system in my larger A3 mod and it has been working as well, along side this system, and works the same if I spawn them the same way as this. One thing I didn't mention above, are BE filters. You will need to take some time and work out which filters you need to edit. I currently have a dozen things I am working on and I honestly can't remember which ones I had to adjust to make this work. The BEC console window will tell you what rule you broke, and that will tell you what changes you need to make to your filters. Since any AI system you use will likely have much different code, there's no way of knowing which filters will be affected anyways until you test it out. The above mission is more of a basic, to get started, mission system and really should be used to figure out how to make your own or how to edit existing systems to work with Epoch. Be warned, though, that if you chose to retrofit an A2 mission there will be a ton of things you need to edit to get everything working happily with A3, (like ai skins and loudouts, positions, vehicles, etc). As I said before, I have tested this many times on my test server and everything seems to be working just fine, but if its not for you guys, let's figure out what's going on! The only issue I have run into is that sometimes the AI wanders out of the AO. This will prompt the same reaction as killing all of the AI and a reward will spawn as soon as the trigger sees no bandits. I am currently working on things for the ai to do other than a random patrol and am also looking at randomizing their gear and skills and fixing the wandering issue. If you have a better way, just let me know and I'll gladly update the top of this post! -
Markokil321 reacted to TayTayTheKiller in Overpoch A3
"From the minds that brought you overpoch" lol it wasn't even them who thought of the idea. :rolleyes:
Another cunt move from a bunch of cunts.
-
Markokil321 reacted to Sandbird in [Project / WIP] dayzChunks - Load Objects in a chunk style as opposed to all at once
Nice idea...i hope without that endless pit where the chunks were missing in minecraft and you just saw lava flowing from holes down to oblivion :P
You should check this post here:
I think these 2 combined (if you are not already doing it with a similar way) will really boost both server and client fps.
-
Markokil321 reacted to striker in [Project / WIP] dayzChunks - Load Objects in a chunk style as opposed to all at once
This is an extremely ALPHA project and by no means is appropriate for production servers! ONLY FOR DEVELOPMENT SERVERS (when released)
Hey guys,
Intro
Just want to share with you my latest project that I have been working on. One of the biggest issues I have seen with running a server is low fps do to the shear amount of objects in the server. I pondered on how I could solve this issue. One of the first games to pop into my head was Minecraft. Why is Minecraft significant? It's significant because the size the levels can be can practically be unlimited to the average person, and the way they achieve this is, well, level chunks. So I decided I would take this concept and apply it to the object spawning mechanism.
The Mechanism
The way dayz currently spawns in objects is it spawns everything in at once when the server starts. This creates lower FPS on the client side because the clients have to account for all of those vehicles. The way I have reworked the mechanism is to put all the objects into an array for later access. I get the chuck the players are in by using a function that divides their location by the chunk size. This in turn, creates a array location which can also get the objects within their chunk. You can also apply a chunk radius which will be added and subtracted from the current chunks location. This is done to prevent only one chunk to load at once.
Benchmark
Here is a few screen shots of the script in action and then without the script. This is on a public server with less than a thousand objects on the server. (FPS in upper right hand corner)
With chunk script
Without chunk script
Result: As you can see from the pictures, rural areas on the map, FPS increase is close to +20, while on the city side of the spectrum, FPS increase is a mere +5 FPS.
But that is not where the script is suppose to shine... What if I told you we could have 10,000 object on the server with a decent FPS? Lets try it at 2,000 vehicles first shall we ;)
With chunk script
Without chunk script
Result: Yep, chunks helped tremendously with the FPS of the client. It's FPS was a shear +38 fps more and there was 2,000 vehicles.
The performance increase is great but there still is a long road(network lag) ahead of the script.
Any thoughts? Should I continue with it? IS IT THE FUTURE?
Ill share the script once I have it to an exceptionable point. However, if there is a massive influx of people who want to see it for themselves, I might release what I have now.
Appreciate and support my work?
-
Markokil321 reacted to Richie in Since when did MGT sell in-game items?
When will this bullshit end is a better question ?
FFS people it's a game, it shouldn't come with politics.
Dave can run his server how he wants, I can run mine how i want and if people don't like it, well they can run there own server.
So many childish threads here lately, can't we all just grow up and play where we want, how we want :)
-
Markokil321 reacted to Skaronator in Addon 'A3_epoch_server' requires addon 'A3_epoch_config'
You need to install the Epoch Mod on the server as well. (@Epoch Folder from your Client)
-
Markokil321 reacted to Zupa in DZE_ConfigTrade= True question
TO help u understand why this happends
This is in your compiles. ( Im gonna let u think abit on it ^^).
// trader menu code if (DZE_ConfigTrader) then { call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuConfig.sqf"; }else{ call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuHive.sqf"; }; -
Markokil321 reacted to f3cuk in Turn custom map content from vehicles to objects
Okay so got the initial code working. What i did so far is first setup an array with object classnames that i want to spawn local, which is the exact same list of classnames of objects that are immune to damage on our server.
server_monitor.sqf
_cpcimmune = ["WoodFloor_DZ","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodLargeWall_DZ","WoodSmallWallDoor_DZ","WoodSmallWallWin_DZ","Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","WoodLadder_DZ","WoodStairsSans_DZ","WoodStairs_DZ","WoodSmallWall_DZ","WoodSmallWallThird_DZ","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","Land_DZE_LargeWoodDoor","MetalFloor_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","FuelPump_DZ","CinderWallDoor_DZ"] Then inside the forEach (_BuildingQueue + _objectQueue); loop i added this on top.
{ _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _hitPoints = _x select 6; _fuel = _x select 7; _damage = _x select 8; _dir = 0; _pos = [0,0,0]; _wsDone = false; _skip = false; if(_type in _cpcimmune) then { localObjects set[count localObjects, [_type,_ownerID,_worldspace,_damage]]; _skip = true; }; if(!_skip) then { // continue with spawning server-side items Then clientside to spawn in the objects..
[] spawn { private ["_type","_ownerID","_worldspace","_damage","_dir","_pos","_ownerPUID"]; waitUntil {sleep .5; !isNil "localObjects"}; { _type = _x select 0; _ownerID = _x select 1; _worldspace = _x select 2; _damage = _x select 3; _dir = 0; _pos = [0,0,0]; if (count _worldspace >= 2) then { if ((typeName (_worldspace select 0)) == "STRING") then { _worldspace set [0, call compile (_worldspace select 0)]; _worldspace set [1, call compile (_worldspace select 1)]; }; _dir = _worldspace select 0; if (count (_worldspace select 1) == 3) then { _pos = _worldspace select 1; }; }; if (count _worldspace < 3) then { _worldspace set [count _worldspace, "0"]; }; _ownerPUID = _worldspace select 2; if (_damage < 1) then { _object = _type createVehicleLocal [0,0,0]; _object setVariable ["lastUpdate",time]; _object setVariable ["ObjectID", _idKey]; _object setVariable ["OwnerPUID", _ownerPUID]; _object setVariable ["CharacterID", _ownerID]; _object setdir _dir; _object setposATL _pos; _object setDamage _damage; _object addEventHandler ["HandleDamage", {false}]; _object enableSimulation false; if ((typeOf _object) in dayz_allowedObjects) then { _object setVariable ["OEMPos",_pos]; }; // TODO: Build a client-monitor that keeps track of objects that were removed }; } count localObjects; }; -
Markokil321 reacted to f3cuk in Base battle?
I'll look into making it for Wicked AI, doesn't seem that hard.
Right now working on a missions that spawns a patrol unit which drives (with some cargo) from town to town until it gets stopped or times out.
Another one that I'm currently working on is "town takeover" mission where AI captures a town and defends some supplies at town square.
(P.S. Sad to see people seemingly create awesome new missions but then fail to share..)
-
Markokil321 got a reaction from Richie in Wai 2.1.4 need Help
You want them to despawn?
Then in config.sqf set true to false... :rolleyes:
wai_keep_vehicles = true; // save vehicles to database and keep them after restart -
Markokil321 reacted to Nekuan in New Overpoch Server
I think almost all of them are overwatch addons right? Are you sure you got the overwatch Key on your server?
-
Markokil321 got a reaction from Chainsaw Squirrel in BTR90_HQ is available at trader , cant not find the dumb thing in database !
Have you also checked page 2 in navicat? Can just remove the record limit but it took me very long to figure this out back in the day... :rolleyes:
Or if you're using mission config based traders may want to check in the appropriate .hpp file. (usually in CfgServerTrader\Category folder)
-
Markokil321 reacted to StiflersM0M in [Help] With getting custom mod pack working on Overpoch Panthera (Vilayer)
malloc is the memory allocator for arma, if villayer got a own memory allocator for it i would suggest you to you this one.
-
Markokil321 reacted to f3cuk in How's 1.0.5.2 coming along?
@Epoch devs: Since it seems like you are really busy with A3 Epoch (which is fine), do you mind if some of us took over (or at least help out releasing 1.0.6.X) development of A2 Epoch? I guess we could do it with a decent team of scripters like Raymix, Rimblock, Zupa, ebaydayz, Axe Cop, Nox, etc.
-
Markokil321 reacted to fr1nk in Dayz standalone moving to a new engine
So, in other words, DayZ SA coming to a PC near you....in 2017.
-
Markokil321 reacted to Sukkaed in Server Lag, can this help _bldObj
I dont see how that could make any diffrence. It's just a private variable.
-
Markokil321 reacted to Pasquale in [Release] Wicked AI 2.2.0
Why AI does not use RPG, M136...?
ai_wep_launchers_AT = ["M136","RPG18","JAVELIN];
ai_wep_launchers_AA = ["Strela","Igla","STINGER];
wai_use_launchers = true; // add a rocket launcher to each spawned AI group
wai_remove_launcher = true; // remove rocket launcher from AI on death
What could be the problem?
-
Markokil321 reacted to DJDosKiller in Altis map Sucks
Please take the chernarus map for Arma III and combine it with epoch. Altis is a really bad map for survival.
-
Markokil321 reacted to Kiory in DAFUQ is with the new helis, dem mechanics though
If all your hopes and dreams have been ended by a video game, you need to get your priorities straight.
As for the new Rotor Lib mechanics, they are awesome, but not for everyone, hopefully this will now weed out useless pilots and only the best will be able to savour the satisfaction of taking off, flying and landing.
-
Markokil321 reacted to Chainsaw Squirrel in Recent Commander Issues
Many still do not know about Launcher, I hear it every day .. if more of the youtube lets play folks mentioned this and more of the twitch streamers.. the issue would be as much of an issue... and on top of that people have to figure out how to get rid of the old non functional version of steam they had and download the new version of the beta, and with launcher they also have to dl a version of the client files that they already had installed.. big download if your on a slower dsl or cable connection..then you have the folks that need to manually update the battleye filters for what ever reason .. firewall etc they aren't getting the newer updates...
I have posted all of this on my website .. and on load screen.. so the ones that do actually hit the load screen and fail .. know where to find the info they need..
And many just cant figure it all out even with step 1, 2, 3 etc some never will .. trying to be nice here lol .. its hard :rolleyes: .. people are generally lazy..and or impatient .. all want a one click fits all fix.
The die hards who really want to play will fig out .. the others .. just move on to another game.. a3, or standalone .. no matter that standalone sux balls lol..
Get the twitchers and lets play peoples involved .. and it will resolve faster.. after all thats how I found out about dayz many many moons ago .. my 8yr old son .. kept telling me about this game .. I was like yea yea yea.. uh huh .. tell I finally sat down and watched it with him .. instantly hooked .. 4 yrs later .. still hooked
-
Markokil321 reacted to Daniel in Please help and vote !
I think he wanted to say Bohemia Interactive so BI not BE ;)
Maybe it would be possible that BE can detect if on someones screen a wall disapears (because he is vaulting or stuf like this) but u have to remember, when u got serious desync problems and the BE is checkin you it probaly can make a false detection....result of this would be: 1 Mio BE kick´s per second ;)
So pls forget a BE side detection of "wall glitcher".
This problem has to be solved by BI ( game developer) maybe they can copy the new navmesh from dayz standalone to arma 3 so they can simply say (Ingame-Code) :
oh look, a wall !
you can´t reach the other side
you wont be able to cross the restricted area ( the wall)
but lets be honest....that would be a lot work....a lot testing....a lot (maybe) waste of money by BI ( Bohemia) and this problem is there since flashpoint arma2 and so on.....
i really cant believe they havent tried to solve it....
maybe the engine isnt able to handle a correct collision detection ?
but thats al Nirwana for us! Only the Dev know´s :)
-
Markokil321 got a reaction from jessebilyk in Please help and vote !
What?
I 110% agree game glitches or exploits need to be fixed with high priority, however this needs to be done by the game developers themselves... or the mod creators, if it's a mod related issue.
Why are you expecting a third party anti-cheat software like BattlEye to solve problems with flawed game mechanics, or 'ingame glitches'? It's just not their job as far as i see it, but the job of the people mentioned above. (not saying it wouldn't be awesome to have a random wizard appear and fix all ArmA game issues, i just don't think that will ever happen, lol)
afaik, mr. Suter (BattlEye) needs to get busy fixing some of his own issues i have had reported to me by players recently (BE failed to update, trouble joining, BE initialisation failed. etc) before he even makes an attempt to resolve something other people should have already resolved.
I'd be sending BIS emails or forms instead, or would pay them a home visit if i had the ability to do that.... :o