Jump to content

bewilderbeest

Member
  • Content Count

    11
  • Joined

  • Last visited

  • Medals

Community Reputation

10 Good

1 Follower

About bewilderbeest

  • Rank
    Private First Class

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. bewilderbeest

    Terrain visually glitching in latest build

    Thanks SQB-SMA, I spotted this in today's patch notes and hopefully it addresses the issue:
  2. 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.
  3. 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
  4. 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?
  5. 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?
  6. 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
  7. bewilderbeest

    When are unit icons revealed on the map?

    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?
  8. bewilderbeest

    When are unit icons revealed on the map?

    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.
  9. 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
  10. 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.
  11. 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
×