Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

  • Medals

Community Reputation

46 Excellent

1 Follower

About alpha993

  • Rank
    Private First Class

Recent Profile Visitors

503 profile views
  1. alpha993

    [SP Campaign] Nirvana: Eventide

    Thank you for the compliments! Could you describe the issue you have with workshop mods? Perhaps there's a workaround or some way to solve it.
  2. alpha993

    [SP Campaign] Nirvana: Eventide

    Quick update to remove Contact DLC dependency that was left over from development. Also added a google drive link for direct download.
  3. >STEAM WORKSHOP DOWNLOAD< >ARMAHOLIC DOWNLOAD< >GOOGLE DRIVE LINK< SUMMARY Nirvana is a science-fiction story set in the year 2156, around the slow economic collapse of an attempted Utopian society called the United Nations of Earth. As the tensions between the four planetary Constituent Nations of the UNE continue to rise, a project that could change Humanity's future forever develops in the shadows. Conceived as a love-letter to science-fiction stories such as Mass Effect, the Expanse, FreeSpace 2, Blue Planet, and more, Nirvana follows Lieutenant Christopher Graham as his life becomes intertwined with the greatest and bloodiest turning point in Human history. Featuring eight fully voice-acted missions and several cutscenes, Act 1: Eventide is the humble beginning of an increasingly ambitious journey. FEATURES Eight fully voice-acted missions including a mission on the Lunar surface Four fully voice-acted training missions Several fully voice-acted cutscenes Custom "menu/hub" mission with mission selection, database and credits Deep lore with an integrated database for reading Custom futuristic HUD with integrated compass, ammo/health tracking and more Animated briefings before missions Many interesting fiction pieces such as articles, audio files and more sprinkled throughout missions Carefully selected soundtrack by Lorn and several others INSTALLATION Simply subscribe to the campaign and load it as you would a mod, alongside the required modset. Once in-game, go to to Singleplayer -> Campaigns -> NIRVANA: EVENTIDE and play the menu mission. It is recommended to always go to the menu mission and start/continue the campaign from there. MOD COMPATIBILITY It is strongly recommended that you play only with the required mods as any other mod may break the campaign or introduce unwanted behavior. The only exceptions are mods such as JSRS or Blastcore as these do not alter base gameplay. FUTURE PLANS Nirvana: Act 1 - Eventide is the first act out of a planned total of four. Production has already begun on Act 2 - Kindling, with an even more ambitious total of fourteen main missions and six hub missions. Act 2 will possess a fully-realized conversation system similar to Mass Effect's, where your decisions and interactions will affect the future result of the story down the line. KNOWN ISSUES Cutscenes may be obscenely loud for unknown reasons. Currently looking for solutions. The custom HUD was designed before I had full knowledge of the Pixel Grid system, so the interface may not work properly unless you have your interface size set to 'very small.' This will likely be addressed as development on Act 2 continues. Due to Nirvana using Arma 3 in ways it was perhaps not intended for, it is likely that some things may break or behave unpredictably as time goes on. Please do not hesitate to point out these issues so that they may be fixed ASAP. The overview picture for the campaign in the Campaign menu may not show sometimes. SPECIAL THANKS Jori Villaveces for revising and playtesting Act 1 and helping co-write the following three Acts. Justin T. Rico for playtesting and providing exhaustive QA notes. All our friends who kindly provided their voice talents. Bohemia Interactive for providing such an infinitely-customizable sandbox experience. Volition for creating FreeSpace 2, which served both as inspiration and a platform to create Nirvana's space-based cutscenes. The FreeSpace 2: Blue Planet team for creating one of the best user-made stories ever and serving as the main inspiration for this campaign. Adobe for providing the tools I used day in and day out. Article 2 Studios for Operation: Trebuchet. The Opposition Team for ME: Opposition. Polpox, Bushlurker, Goschie and Alias for their helpful mods, maps and scripts, respectively. SCREENSHOTS
  4. It's a highly specific and bespoke UI using custom graphical elements made in Adobe Illustrator, so I doubt it would be very useful as a standalone template. But hey, if you have a specific use for it I could try and cook something up when I have more time.
  5. You might want to take a look at this script.
  6. Thanks a lot! It's for a sci-fi campaign I'll be releasing soon so I've just been laboring over all the little finishing touches.
  7. So I actually ended up solving this by using the campaign Description.ext and using different end classes. I'll put a brief explanation here in case anyone ever attempts something similar. Excerpt from my campaign Description.ext: class Missions { name = "ACT 1: EVENTIDE"; cutscene = ; // Cutscene that plays at the chapter start, does not appear in mission list firstMission = Nirvana_Menu; // Class of the first mission of the chapter end1 = ; // Chapter endings. Uses classes of defined chapters to move on to. Blank ends the campaign end2 = ; end3 = ; end4 = ; end5 = ; end6 = ; lost = ; // Nirvana Main Menu class Nirvana_Menu: MissionDefault { template = Nirvana_Eventide_Menu.VR; // Mission file. Must always be located in the 'Missions' folder within the campaign loadT1 = Nirvana_T1; // Endings. Classes of defined missions to move on to. Blank ends the campaign loadT2 = Nirvana_T2; loadT3 = Nirvana_T3; loadT4 = Nirvana_T4; loadM1 = Nirvana_M1; loadM2 = Nirvana_M2; loadM3 = Nirvana_M3; loadM4 = Nirvana_M4; loadM5 = Nirvana_M5; loadM6 = Nirvana_M6; loadM7 = Nirvana_M7; loadM8 = Nirvana_M8; }; // First Training class Nirvana_T1: MissionDefault { template = Nirvana_Eventide_T1.VR; end1 = Nirvana_T2; }; // Second Training class Nirvana_T2: MissionDefault { template = Nirvana_Eventide_T2.VR; end1 = Nirvana_T3; }; // Third Training class Nirvana_T3: MissionDefault { template = Nirvana_Eventide_T3.VR; end1 = Nirvana_T4; }; // Fourth Training class Nirvana_T4: MissionDefault { template = Nirvana_Eventide_T4.VR; end1 = Nirvana_M1; }; // Mission 1 - Scavenger Hunt class Nirvana_M1: MissionDefault { template = Nirvana_Eventide_M1.Altis; end1 = Nirvana_M2; }; // Mission 2 - Judas in All but Name class Nirvana_M2: MissionDefault { template = Nirvana_Eventide_M2.Altis; end1 = Nirvana_M3; }; // So on and so forth with the rest of the missions }; Looking at the code, the Campaign Description.ext allows you to set up many end classes, such as "end1", "end2" and "lose", which can be called at the end of a mission by using ["end1"] call bis_fnc_endMission. However, Arma 3 also allows you to use custom end classes, which I have named loadT1-4 and loadM1-8 which tell the campaign to switch missions to my four training missions and eight regular missions depending on the case. These are placed under my Menu mission's class. This then allows me to call the appropriate end type depending on the selected mission on my listbox. For example, selecting mission 3 and pressing "Play Mission" would execute ["loadM3"] call bis_fnc_endMission, which would then end the menu mission and directly load mission 3 as I originally intended. Each mission then has its own default end class (I just used end1) which proceeds to the next mission on the campaign. So if I were to select mission 5 from the menu, play it and finish it, it would naturally proceed to mission 6.
  8. alpha993

    waitUntil alternatives

    waitUntil should work just fine for what you're trying to do. I would just make sure you put the script command and variable within parentheses before the < operator. try using: waitUntil {(speed _object) < 20}; Whatever is after that should fire whenever _object's speed drops below 20.
  9. I am making a campaign that has a central menu as a standalone mission. This menu contains lore and other information which I want to keep separate from the actual missions themselves. However, I would like this menu to also have the ability to load other missions within the campaign. I am aware of two existing commands which could be used, but I am unsure on how to proceed with them exactly. These are https://community.bistudio.com/wiki/playMission and https://community.bistudio.com/wiki/playScriptedMission. playMission seems to do nothing, while playScriptedMission works, but I need help figuring out how to point it towards a specific mission rather than creating a dynamic one (if at all possible). These images are from the menu I implemented in-game. Ideally, you would select the mission from the listbox on the left and press the "play mission" button to start it. Some function would then take the selected item from the listbox, match it to its respective mission path and use it with one of the aforementioned commands to launch the mission. Any help on this would be greatly appreciated.
  10. If I understand correctly, the Old Man scenario is itself a packaged .pbo. However, it shows up with a proper title and overview image unlike my missions. Has anyone taken a look inside the Old Man scenario to see if something was done differently? Or is it because Old Man is included as part of an addon?
  11. So I ended up creating this grid of game logics which are synced-up together appropriately to form the paths in the maze. This way, the AI can walk along these lines and effectively simulate pathfinding without going through any walls. In the meantime, I have it set up so the AI will simply randomly patrol the maze, but I believe it is easily achievable to use this set-up to run a pathfinding algorithm. Here's the code I have at the moment: params ["_currentPos","_unit"]; //var name of starting position (game logic object), var name of patrolling unit (unit) _lastPos = _currentPos; while {true} do { _synchPositions = synchronizedObjects _currentPos; //find all positions synchronized to the current position _nextPosArray = if (count _synchPositions > 1) then //check to ensure the unit does not backtrack unnecessarily { _synchPositions select {_x != _lastPos} } else { _synchPositions }; _nextPos = selectRandom _nextPosArray; //randomly select another position to move to _unit doMove getPos _nextPos; //make AI walk towards the new position waitUntil {_unit distance getPos _nextPos < 1}; //wait until the AI has reached the new position _lastPos = _currentPos; //register the last position for the next loop to ensure no unnecessary backtracking _currentPos = _nextPos; //update current position }; What I have so far actually accomplishes what I was looking for, but any better solutions are always welcome. 🙂
  12. This is a solution I thought of, but it kind of terrifies me from the amount of work that would be involved. I basically built a grid of helper objects that the AI would move through, thereby avoiding the walls. Each helper would be synchronized to its adjacent helpers, in essence forming paths around the maze. I would then assign one to the AI as a starting position, from which it would travel along the synchronized helpers to the player's position. That's all well and good in theory, but I'm not quite sure how to actually go about calculating the route once that's done.
  13. Are you referring to this script? If so, that would require either building positions for the AI to move through, which the maze does not possess as it is made out of standalone castle walls, or hardcoded positions, which is not what I wish to accomplish.
  14. So I built this maze in the Eden editor for a scenario akin to Daedalus and the Minotaur. The player is meant to start at the center and escape the maze while avoiding an AI who is actively hunting the player down. However, Arma 3's existing AI pathfinding might as well not exist, since the AI simply phases through all the maze walls in a straight beeline towards the player. Ideally, the AI should find the shortest path (without phasing through walls) to get to the player's current position. This path would then be recalculated every few seconds to account for the player moving through the maze. Any help on how this could be done would be greatly appreciated.