bewilderbeest
Member-
Content Count
11 -
Joined
-
Last visited
-
Medals
-
Terrain visually glitching in latest build
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - TROUBLESHOOTING
Thanks SQB-SMA, I spotted this in today's patch notes and hopefully it addresses the issue: -
Hi all, Has anyone else noticed this graphical issue with certain textures on the ground? I can't tell if the cause is textural or geometry. This only started happening recently on the dev build. I'm running on Win7 64bit, a Core i5 and an Nvidia 660Ti. I need to check, but its possibly related to me running beta graphics drivers. Can't check right now, am at work.
-
Is choosing to use CBA, MSO etc. a good thing? Need advice
bewilderbeest posted a topic in ARMA 3 - ADDONS & MODS: DISCUSSION
Hi everyone, I'm new to the Arma series with the Alpha of 3. I'm currently maintaining a Wasteland server with a friend, and we're engaged with active development on it, introducing a Bounty Hunt mission, player persistence and numerous other tweaks. The codebase is very frankenstein-ish. No offence to Sa-Matra, 404 and anyone else, but the sheer number of different people who've had a hand in adding code is huge and has led to a bit of a mess. This is on top of the fact that many of the scripts are very definitely targeting ArmA2 and have a lot of specific workarounds for things which may or may not have been fixed in the new engine, and a user interface which feels dated. This brings me to today. I'm looking at how best to implement something (mission? mod?) similar to Wasteland in the sense that it has Rogue-like qualities. Random loot, random missions, improvised gameplay, Perma-death, character progression. I don't want to remake DayZ, and I think there should be lots of equipment on offer, but there should be a sense of value to it all. I've started with Arma2NET and the MySQL extension, and have a serviceable player persistence layer, but I'm now faced with a choice: Do I start leveraging community addons like CBA, MSO and others? Or are they going to cause me more issues than benefits? Does it cause code-bloat or slowness? I have no experience in how this works, so I'd really like some advice from some seasoned ArmA coders to give me some basis for evaluation. Also, since CBA is GPLv2, does this mean I need to consider my code being forced to be open? I'd love to hear what people think about where the ArmA3 coder community will be going. Cheers, [KoS]Bewilderbeest -
Need advice on how to create a MP area capture system
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Thanks kylania, I had no idea that existed! I'm trying to debug an overloaded server, but I'm guessing the codePerformance method doesn't really work like that given it has a GUI element. Any other things for debugging server load? -
Need advice on how to create a MP area capture system
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Or failing any direct advice on this specific problem, can anyone share their tricks on how to debug non-performant code in Arma script? I'm using diag_tickTime to get an idea of speed for individual methods, but is that basically as good as it gets? -
Need advice on how to create a MP area capture system
bewilderbeest posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Hi all, I'm a relatively new Arma coder, so I'm looking for some advice on how to improve my multiplayer capture system. It currently runs, but the longer the server is up, the slower it gets, and I don't know why :( I've currently got a structure whereby I use a list of map markers to create client-side triggers. These triggers use setVariable on the player to denote which capture area they've entered or exited. It looks something like: player setVariable ['CAP_POINT', 'CAP_POINT_AIRSTATION_MIKE', true]; On the server I have a while-true loop which goes through each player, pulls out the capture area they're at, and then does a process of reconciliation to figure out which areas are contested, which are uncontested and then ticks up a capture timer accordingly. The pseudo-code for this in various stages. First we get an array of each player + the cap point they are at: _capPointPlayerMapping = []; { _curCapPoint = _x getVariable ['CAP_POINT', ""]; _capPointPlayerMapping = _capPointPlayerMapping + [[_curCapPoint, _x]]; } foreach playableUnits; I then reduce this down to a mapping of each cap point, and an array of players present (I wish we had hashes!! (I know we've got some stuff on the dev branch) ). For each capture area I then pass to a function which returns the following: - Number of WEST players - Number of EAST players - Number of GUER players - Name of dominant team - Contested state (true if multiple sides are present) This is then reconciled into a set of actions for each area. RESET, CONTINUE or BLOCK. - If it's RESET, take the current counter value for the capture point and set it to zero - If it's BLOCK, don't increment the counter - If it's CONTINUE, increment the capture counter value If the capture counter is over a threshold, mark the capture point as owned by the currently dominant team in that area. I then store the following data as an array for comparison the next time round the loop. [CAP_POINT_NAME, ARRAY_OF_PLAYERS, TIMER]. ['CAP_POINT_NAME', [ <PLAYER 1>, <PLAYER 2>, <PLAYER 3>], 20] After this I sleep for 2 seconds and do it all over again. My problem is that the capture time slowly creeps up on our server. We run a 64 player Wasteland mission, so there's already a load of stuff running in the background. The overall loop time, according to diag_tickTime calculations ranges from 0.0220032s all the way up to 1.18164s. Is there a reason for this timing discrepancy? Looping over the list of players and doing some string comparisons and array reconciliation isn't difficult. There are only about 15 capture areas on the map. is player getVariable [] a REALLY slow call? Is there a better way I can get client data up to the server? Any advice you more experienced coders can give me would be really helpful. My code is available at https://gist.github.com/nickludlam/9bb8bf4521eaeb16d81c and the required array captureAreaMarkers is [ ['MARKER_NAME_1', 'Description of area'], ['MARKER_NAME_2', 'Description of area 2'] ]. Thank you lovely Arma community! Bewilderbeest -
When are unit icons revealed on the map?
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - QUESTIONS & ANSWERS
Thanks everyone for the replies. Can somebody explain to me what the fairly cryptic instructions are on the Biki page I linked? Does this mean in description.ext I'd put: class IslandMap { iconPlayer = "\ca\Weapons\Data\clear_empty"; } Or whatever the correct way of blanking the icons would be? Also I've got no granularity over allowing friendly units to see each other, but prevent enemies from showing up? Is there perhaps a way I can crack open the Arma defaults to see how they've done things? -
When are unit icons revealed on the map?
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - QUESTIONS & ANSWERS
Great, thanks Jimmy, That's given me a point in the right direction. I found this page, http://community.bistudio.com/wiki/Arma_3_Difficulty_Menu and the section I want is Extended map info it looks like. I must admit I'm not entirely sure what IslandMap >> iconPlayer means though. -
When are unit icons revealed on the map?
bewilderbeest posted a topic in ARMA 3 - QUESTIONS & ANSWERS
Hi all, I've only recently got into this series via the alpha of Arma3 but I'm a decent coder so I've started learning the crazy world of Arma scripting through customising a Wasteland mission. One thing I've struggled with is what controls when enemy/neutral/friendly units are revealed on the map. Is this purely related to the game's difficulty setting? I'm talking about the small blue/red/green/purple circles rather than 3D spotting, although that's also something I'd love to know about. Am I even using the right terminology here? I'm using "spotting" since I've come into Arma via Battlefield, but there seems to be explicit spotting ("Man, 300m north east!") in the HUD, and implicit spotting where they show up only on the map through shooting an un-silenced weapon. Also you seem to implicitly know where friendly units are on the map when you're grouped with them. Is that controllable too? If anyone can point me in the right direction, or relate what they know about this topic I'd appreciate it! Cheers, B -
Helper script when your mission is in git (source control)
bewilderbeest replied to bewilderbeest's topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Ah interesting, so you edit a git clone of the mission directly inside your mission folders? I didn't know about the Eclipse plugin, I'm using Sublime Text 2 with a syntax highlighter for SQF files, which does the job. -
Helper script when your mission is in git (source control)
bewilderbeest posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hi all, I just wanted to share a little utility script with you that I've found really helpful when I've been editing a Wasteland misson that I keep on github.com. Using source control for ArmA missions is incredibly useful if there's more than one person wanting to make changes, and we employ this script when editing our KoS Wasteland fork of the original by 404/Fakstah/JoSchaap. :: install.bat :: :: This script has two functions :: :: 'install.bat test' - Copies the mission to your local MPMissions folder :: 'install.bat package' - Compiles a PBO for testing with a standlone server @ECHO OFF :: Set your ArmA3 profile name and PBO dest dir below. IF "%username%" == "Someone A" ( :: Your profile is assumed to be in "Arma 3 - Other Profiles" SET LOCAL_ARMA_PROFILE=[Clan]SomeoneA :: Your local standalone server directory SET PBO_DESTINATION_DIR="C:\ArmaEditing\ArmA3\A3Master\MPMissions" ) IF "%username%" == "Someone B" ( SET LOCAL_ARMA_PROFILE=[Clan]SomeoneB SET PBO_DESTINATION_DIR="G:\Games\a3master\MPMissions" ) :: General definitions SET SOURCE_DIR="%USERPROFILE%\Documents\GitHub\Wasteland" SET PBO_TOOL="C:\Program Files (x86)\Bohemia Interactive\Tools\BinPBO Personal Edition\BinPBO.exe" SET LOCAL_MISSION_NAME=KOS_Wasteland.Stratis SET TEST_DESTINATION_DIR="%USERPROFILE%\Documents\Arma 3 Alpha - Other Profiles\%LOCAL_ARMA_PROFILE%\MPMissions\%LOCAL_MISSION_NAME%" :: end config IF %1.==. GOTO NOARG IF "%1" == "test" GOTO TEST IF "%1" == "package" GOTO PACKAGE GOTO NOARG :: Package mode - Creates a PBO file of the mission :PACKAGE ECHO "Building PBO..." mkdir %TEMP%\%LOCAL_MISSION_NAME% xcopy /q /s /y %SOURCE_DIR%\* %TEMP%\%LOCAL_MISSION_NAME% echo Copied to %TEMP%\%LOCAL_MISSION_NAME% %PBO_TOOL% %TEMP%\%LOCAL_MISSION_NAME% %PBO_DESTINATION_DIR%\ rmdir %TEMP%\%LOCAL_MISSION_NAME% /s /q GOTO END :: Test mode - Install Wasteland to your MPMissions folder of your profile :TEST ECHO "Building a test install..." mkdir %DESTINATION_DIR% xcopy /q /s /y %SOURCE_DIR% %TEST_DESTINATION_DIR% GOTO END :NOARG echo "install.bat - Installs the Wasteland mission for testing or packaging" echo Error: You must specify 'test' or 'package' as an argument :END The mission source stays in Documents/GitHub/<REPO NAME>, and the above code should become 'install.bat' in the root of your repo. This script has two modes of operation: Copy the mission to my local profile directory for editing and client testing Make a PBO and copy to my standalone server missions directory The first mode will allow you to open the mission up in the in-game editor. For our Wasteland mission, I find I still use this way of doing things to change map content. The second mode allows you to test any specific code you've written that is specifically for the standalone server. Wasteland in particular has a lot of specific client and server code, so checking locally in standalone mode is really necessary prior to rolling out onto your live public server. Just throwing this out there, hopefully some of you guys will find it useful too! Cheers, Bewilderbeest/Nick