Jump to content
woofer808

indiCam - independent camera mod

Recommended Posts

indiCam - independent camera

This is a script that I built to help me with recording Arma 3 cinematics.

 

The core idea for indiCam is to use a separate computer to record secondary gameplay footage around a player on a multiplayer server without the need to manually move the camera around.

That stems from me wanting a secondary perspective to mix with my regular first-person footage in a video editor.

 

No actual recording is done by the script. For that you will have to use screen recording software like OBS, nVidia Shadowplay or Radeon ReLive on the machine that is running indiCam.

So it turns the game into an automatic camera robot. Once it has been started, it will follow your selected unit around while automatically switching between camera angles depending on situation and visibility of the target. The target unit can be a player or AI as well as of any faction.

 

The camera will completely take up the screen. The computer running it will not be able to participate in regular gameplay.

indiCam is short for independent camera. It needs to run independently on a separate copy of Arma, preferably on another machine entirely.

 

Examples of usage:

  • Observe players on a multiplayer server (and record it) to get all the juicy details
  • Let AI duke it out in epic single player scenarios and use as screensaver, cause the Arma must go on.
  • Record your own gameplay in a multiplayer scenario from another client, since it can never be too much Arma.
  • Record the trials and tribulations from the perspective of the opposing force so that you can watch that after the fact and bask in your own shock and awe.

 

 

Technical description

Definition: actor - term for the current unit that the camera is tracking

Definition: scene - the complete set of variables that defines how the camera should behave at any given situation such as camera position, zoom, target object or things like that.

 

The script is built in a modular fashion and picks a scene type depending on the current situation. Each scene can be tweaked and optimized to suit by editing the code.

The main factor that the script takes into account is for vehicle type. If the actor is on foot - which is considered a vehicle type - the scenes will look different from when the actor is in a helicopter for example.

Depending on vehicle type, the script will then adjust for level of action around the target and speed/altitude of vehicles.

 

New functionality from 1.3 is the "scripted scene" system that is intended to capture special events. The current one is a script that looks around the vicinity of the camera to see if any units are aiming their launcher. It will then roll the dice to see if it should show that specific event. After it's done, the camera will go back to regular operation.

 

Press F to start the indiCam control window.

 

Each scene has an individual duration time defined. After that time has run out, the script will do a line of sight check and pick a new scene where the actor is visible from the camera position. Currently that means that the actor might not necessarily be in frame, but below or behind the camera. There is also a possibility of making the scene ignore the line of sight check so that it will be applied anyway.

Many scenes randomizes the camera position and zoom level. So each time they are applied they will not look exactly the same. This makes the footage more varied. It also helps with finding a camera position that works within a confined space like a house as well as open areas by placing those far away camera angles with a high level of zoom.

 

So creating new scenes of your own should be pretty straightforward, just copy a similar existing one and put it in the situation where you want it. In the scene selection script there is a code block that can force a scene to execute. This is where new scenes can be trimmed in properly before being put into the randomizing loop.

On the more advanced side of things, the script uses hidden proxy objects for camera placement and orientation. They’re called “game logic” in code, but maybe should have been called proxies instead. These proxies allow for producing movement of the camera that is decoupled from the unit it is tracking. It makes for much more smooth camera movement and tracking.

 

Resources

The mod version and script version are contained in a single package and can be downloaded here:

https://drive.google.com/open?id=1pvVD-zwCXnvWj5zHwPgXfgkvo4MEJ9FL

 

Steam mod download:

https://steamcommunity.com/sharedfiles/filedetails/?id=1372800247

 

On my youtube channel there are already videos containing footage from indiCam.

https://www.youtube.com/channel/UCi3gV_w80QkjgOd7H4Zu46w

 

Test the script directly in an example scenario from the Steam workshop:

https://steamcommunity.com/sharedfiles/filedetails/?id=1372803729

 

There is a Discord on the subject where you can get in touch and download future beta versions.

https://discord.gg/gM4RyTd

 

Future plans

Between work and family life I just cannot reliably commit much time to projects like these. That is the main reason it was released in it’s initial not-really-perfect state. If you want something changed, please report it but don’t expect too much in way of fixes or releases quickly. I’ll try to stay on top of things, but it never seems to work out entirely as I hoped.

With that said, I have a bucket full of ideas that I want to implement as soon(TM) as I can manage. Stuff like more types of camera movement with camera shake, panoramics, vehicle weapon cameras and so on. Then there is always the weapon cam that I wanted to make work.

The other way to have things changed, by the way, is to do it yourself. Feel free to modify the script, it was written with that purpose in mind. If you create any new scenes that are especially cool, consider posting them on the BI forum thread so that others can get those killer camera shots.

 

Contributors

Many thanks to Reggaeman, Ripppe, Parker and Mad_Cheese that helped me test and come up with ideas as I built this from just being my own little helper to something that is polished enough for others to use.

Special thanks goes out to Reggaeman and Parker for condensing hours and hours of gameplay into shorter videos with the little gold nuggets where indiCam did something interesting or just plain weird. It has been incredibly helpful and I wouldn't have been able to spend that kind of time myself.

You’ll find Reggs' videos here: https://www.youtube.com/channel/UCdDmtot-tNsTJMmdk-soeHA

Parker is uploading here: https://www.youtube.com/channel/UCqm8CVJeqlmpx7ACU4HfXqg

 

That is it!

 

love,

woofer

  • Like 5
  • Thanks 9

Share this post


Link to post
Share on other sites

Wow. Just amazing. What a wonderful piece of work!

Will be using this for sure.

  • Like 3

Share this post


Link to post
Share on other sites

Had a good play with this over the weekend and I love it!  Some of the camera angles are a little janky (the overhead one when on foot is a little high) but in the main I’m really impressed.  One thing that I couldn’t sort (and yes it is because I didn’t read the manual!) was jumping out of indicam view without respawning the camera person.

 

Having a functional action cam has been a wish of mine for AGES.  Good job @woofer808 !

  • Like 1

Share this post


Link to post
Share on other sites

Thanks @kremator!

To be perfectly honest, you shouldn't have to read the actual manual in order to be able to close the camera. That's just bad design on my part. Maybe a very quick notification when you start the camera back up? I could also give a hint when any "wrong key" is pressed, but I really want to keep clutter away from the screen as much as possible.

I'd prefer the close key to be something that isn't pressed by mistake to easily so I opted out of the any-key solution.
Escape key is also something that I shy away from since that gives access to the debug console in the main menu.

Is there some sort of key that is common in other mods that people to some extent take for granted?

  • Like 1

Share this post


Link to post
Share on other sites

New version. See main post for links and such.

 

Version 1.1 published  2018-05-02:
Some new significant functionality, thus the jump directly to v1.1.

//ADDED- F3 to switch to another random unit that is of the same side and within a certain distance of the current actor.
//ADDED- A very rudimentary Manual camera mode. Access with F4. For a proper manual camera, see the gCam mod.
//FIXED- Map selection completely rewritten from scratch and works better now.
//ADDED- It's now possible to differentiate between units within some vehicles while selecting actor on the map.
//FIXED- Selecting a unit that is in a vehicle as actor no longer makes the actual vehicle the actor
//FIXED- Keypresses no longer stack between restarts of the camera
//FIXED- Camera no longer resets vision mode when restarted
//FIXED- Camera controls stay on the player between remoting with the "Advanced AI command" mod.
//FIXED- Some diary entries corrected
//ADDED- New scene: Medium and high altitude, medium far, front view with randomization


 

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

Is there a key for the mod version?

Share this post


Link to post
Share on other sites

Aaw, crap. You got me there. I'll make sure it's all properly signed with a working key that is included on the next release which is in the works. This is all very new to me.

 

In the meantime I put the woofer.bikey in the google drive release folder, but I'm not sure the pbo was properly signed this last time.

https://drive.google.com/open?id=1I-KFyO14lZEOLeFDJ5X5CMSGL62FviFl

  • Like 1

Share this post


Link to post
Share on other sites

That key does work with the current build. :)

  • Like 1

Share this post


Link to post
Share on other sites

Not sure if I did something to break it, but the AI killed the player running Indi and that seemed to crash the other player in my server.  Both lost connection to the server, which usually means the server has gone down, but in this case, it was just the clients.

 

Also, the enemy AI will still attack the Indicam player, so he needs to be moved well out of the way or he'll be killed.

 

Personal taste, but I think the distant views are too far, especially the high-looking-down ones and those for dismounted actors.

 

I'd quite like to see, when actors are in fixed-wing, a camera 'bolted' to the top of the tailplane looking forward, or close to a weapon pylon. Perhaps it could switch near pylon/gun when player changes fire mode?

 

Similar for land vehicles, when the player is in a Prowler, for example, a camera bolted to the roll cage would be funky.

 

Also, F3 seems not to be selecting pilots?

  • Like 1

Share this post


Link to post
Share on other sites

Thanks @Tankbuster! That is a lot of valuable info. 

 

Quote

That key does work with the current build. :)

Yay! First time I did that stuff, so glad it worked out.

 

Quote

Not sure if I did something to break it, but the AI killed the player running Indi and that seemed to crash the other player in my server.  Both lost connection to the server, which usually means the server has gone down, but in this case, it was just the clients.

Very weird. Any particular game mode or scenario going on?
 

Quote

Also, the enemy AI will still attack the Indicam player, so he needs to be moved well out of the way or he'll be killed.

I guess cheat mode is already on since it's possible to see all units on the map. I could make the cameraman invincible, captive or something along those lines while the script is running.
 

Quote

Personal taste, but I think the distant views are too far, especially the high-looking-down ones and those for dismounted actors.

I need a lot of personal tastes to be able to arrive at a good middle ground. I try and keep track of it, so it's appreciated.

 

Quote

I'd quite like to see, when actors are in fixed-wing, a camera 'bolted' to the top of the tailplane looking forward, or close to a weapon pylon. Perhaps it could switch near pylon/gun when player changes fire mode?
Similar for land vehicles, when the player is in a Prowler, for example, a camera bolted to the roll cage would be funky.

I hadn't thought about detecting weapon switching, only actual firing of weapons. I'll look into that for sure.

 

Quote

Also, F3 seems not to be selecting pilots?


This is not expected behaviour. I'll have to add that to the list of things to investigate.

  • Like 1

Share this post


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

Thanks @Tankbuster! That is a lot of valuable info. 

 

 

 

Very weird. Any particular game mode or scenario going on?

 

2

It was my own mission, clients were running Bad Benson's Enhanced Movement and Duda's Rappelling. Server is vanilla. Further investigation shows no crashfiles on either client, so it might have been a catastrophic drop to 0 FPS.

  • Thanks 1

Share this post


Link to post
Share on other sites

New version: V1.11 - General changes and updates for smoother development workflow. See OP for links.

 

//ADDED- Keypress: F9 - Press during running camera to get the current scene ID name printed on screen. Good for debug and bug reports.
//ADDED- Dev switch: Set {indiCam_devMode = true} to run everything uncompiled which will facilitate script and scene development on the fly.
//ADDED- Camera logic: randomLinear - Plan is to use for random camera panning movement or as camera shake.
//ADDED- New scene: nonStabilizedCam - Simulated unstable binocular movement using randomLinear logic on foot mobiles and vics
//FIXED- Some of the top-down scenes have been lowered somewhat and given more zoom (tip by Kremator and Tankbuster).
//ADDED- New Scene: shakyChasePerson - A hectic third person sene for high action level
//FIXED- The cameraman is now invisible to all unts and can't take damage while the camera is running (tip by Tankbuster)
//FIXED- Scene selection now differentiates between helicopters and planes
//FIXED- Scenes divided into separate files for each vehicle category to give better overview.
//ADDED- Possibility to state conditions in a scene to disqualify it. For example if a scene should only be used for a specific vehicle.
//FIXED- Scene will now switch directly upon actor mounting or dismounting a vehicle instead of waiting for the scene timer to run out
//FIXED- Situation check eventhandlers no longer gets stacked from previous actors, but transfers to each new actor
//ADDED- Serverkey added to release package

 

  • Like 5

Share this post


Link to post
Share on other sites

Love the mod. It has made my ZEUS multiplayer sessions more interesting.

My current wishlist for the mod:

1. TFAR/ACRE integration, so that we can hear when player talks near the camera.

  • Like 1

Share this post


Link to post
Share on other sites

New version v1.2 with the significant update being a new GUI as a new main method for controlling the script. I have yet to figure out why the mod version looks different from the script version. It has probably something to do with my usage of #include, but I'll get to that eventually.

 

Se the first post for links to download package, steam links and so on.

 

Version 1.2 published 2018-12-27
//ADDED- Automatic switching between players or AI depending on what the current actor is. Cycles intervals ON-10min/ON-5min/ON-2,5min/ON-1min/OFF
//ADDED- A GUI as a new main way for controlling the script. The keystrokes stays - to help with easy access over remote desktop during gameplay.
//TWEAKED- Key F1 will now start GUI during camera operation.
//ADDED- Added abilitiy to override scripted scene duration with a fixed timer in the GUI.
//ADDED- Added "Hold switching of scene" checkbox. It makes a sense to use in conjunction with "force next scene"

 

  • Like 4

Share this post


Link to post
Share on other sites

New version 1.3

Complete redesign of the core scripts have been made. No script was left untouched and most got re-written from scratch.

Major redesign of camera movement system has been done as well. It now gets calculated on each frame to alleviate jitter as much as possible. That means that all the old scenes were wiped and I have started to create new ones. There is a basic set of scenes in and I will add more as I manage to get them stable and smooth enough. The upside is that switching scenes and actors are a whole lot more stable.

The second large addition is the new system that detects special events and cuts to a scene to show that. The only one implemented just yet is the detection of launcher usage by a unit.
 

Se the first post for links to download package, steam links and so on.

//REMOVED- The number of scenes are now back to only a few due to core rewrite. Future releases will see more of them added back in the new system.
//ADDED- Actor auto switching added to gui with controls for duration and nine different modes.
//ADDED- If a player is the current actor, that player will be selected in player list upon loading the gui
//ADDED- Made the player list in gui display what side each player is on. Runs out of space real fast though.
//ADDED- Automatic night vision will now take terrain and current date into account and turn on half an hour after sunset and turn off half an hour before sunrise
//ADDED- Made actor deaths handeled by the scripted scene system and more reliable.
//ADDED- Manual mode added to gui.
//ADDED- Slider in GUI: Chance of capture cinematic scenes upon detection (0-100%). Zero means off.
//ADDED- The initial drop-down selection on map side will be whatever side the player is.
//ADDED- Pressing F9 during camera will now also store the scene name in a list. Going out of the camera immediately after pressing F9 will list the contents in a hint. Good for finding scenes that aren't working.
//ADDED- barrelWatch scene which will track barrel direction. Only for tanks for now.
//FIXED- GUI now looks as intended in both the script and the mod version. Thanks Taro!
//FIXED- Actor death now takes actor auto switch setting into account.
//FIXED- Units of any side can now be selected on the gui map.
//FIXED- Scene override timer now works in scripted version without gui.
//FIXED- Eventhandlers weren't removed from non-actor units in a controlled fashion
//FIXED- Changed wording of gui elements and tooltips for some controls.
//FIXED- Updated diary with information on GUI.
//FIXED- Start button could be pressed repeatedly and launch several instances of the camera.
//FIXED- Settings changed in gui will now be applied even if the camera isn't already running.
//FIXED- Culled a whole lot of unused code.
//FIXED- When debug was on it spawned the indicator spheres on every client.
//FIXED- indiCam settings window could be shown ontop of regular map which caused issues with cursor and markers
//FIXED- If there is only one unit (the player) on a terrain, the camera will not find eligable actors and try to switch actor indefinitly
//FIXED- An occational CTD when calculating too large or small movement values after switching actors.

 

  • Like 4
  • Thanks 1

Share this post


Link to post
Share on other sites

Oh nice. I've used this a lot. Pleased to see a new version

  • Like 1

Share this post


Link to post
Share on other sites

Hi @woofer808

 

thanks for the indi cam script, I used it successfully manually for a CH-46 video lately. I would like to capture some more AI action with it, but would like to do so more automatic. Is there a way to call different actors and start the cam script automatically without GUI? My naive attempt here failed:

 

[] spawn {
	[] execVM "INDICAM\indiCam_core_init.sqf";

	sleep 1;
	[phrog_1] call indiCam_fnc_actorSwitch;

	sleep 10;

	[phrog_2] call indiCam_fnc_actorSwitch;

	sleep 10;

	[phrog_1] call indiCam_fnc_actorSwitch;
	

};

 

  • Like 1

Share this post


Link to post
Share on other sites

@TeTe T that is a really neat idea! I have never thought of scripting actor changes like that.

 

I modified your code a bit and also found a bug because of it, so thanks for that. The idea in the future is that you should be able to toss the GUI out completely so that everything can be scripted in a mission. So that scripted actor change is something that should be easily done in that system

 

[] execVM "INDICAM\indiCam_core_init.sqf"; // Initializes the scripts
indiCam_var_visionIndex = 0; // Required for now because of bug
sleep 1; // Giving init some more time

[] spawn {
	[] execVM "INDICAM\indiCam_core_main.sqf"; // Starts the camera

	sleep 1;
	[phrog_1] call indiCam_fnc_actorSwitch;

	sleep 10;

	[phrog_2] call indiCam_fnc_actorSwitch;

	sleep 10;

	[phrog_1] call indiCam_fnc_actorSwitch;
	
	sleep 10;
	
	indiCam_var_requestMode = "off"; // Turns the script off entirely

};

edit: please don't count my usage of the word "that" in this post.

  • Thanks 1

Share this post


Link to post
Share on other sites
On 8/5/2018 at 10:25 AM, MK84 said:

1. TFAR/ACRE integration, so that we can hear when player talks near the camera.

 

Was hoping to use indiCam one day (second PC is slowing that down). Hoping this feature makes it into the script.

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

×