Back to Main Page


This was an attempt at creating a real-time Rockstar Editor type mod, that was compatible with all scripted effects. The end result was much less than my initial ideas, it also had problems that my modding ability just couldn't solve, so the project died.

 

Lights, Camera, Action - Ambition beyond my ability. (v1.6.8)


The mod at the heart of the videos on this page, LCA, is now officially a dead project. It has had a problem since day one and I can't keep dedicating time to something I obviously have no ability to fix. It was always an adventurous mod and it seems ultimately, too adventurous.

It is tiresome trying to make videos with something that has a 99% chance of going wrong. When I get lucky, it produces good results but lucky is just too rare an occurrence now.

On a positive note, it means nobody has to watch any more of my videos... YAY for everyone else. :-/

Here's a video made with several mods that I have been made over the last few months, including Ground Vehicle Effects v1.5.2.

 

This video is three sequences edited together in Sony Vegas. Each sequence was the same recording, played back with different parameters, to show how a recording isn't confined to the conditions it was recorded under, like the Rockstar Editor. It only records the player's vehicle though but it also works fully with all scrips and mods... including scripted particles, both looped and non-looped. This is combined with a camera editing mod that can set up and place cameras along the replay route.

Here's another new addition to a recent mod. This is a helicam to go with the camera placer and replay mod. It is an actual helicopter, not just a camera, which tracks and follows the player's vehicle. Even when you are not in that view, the helicopter is still in the scene, whch means under the right conditions, you can either see it in the shot, or see its shadow on the floor, which adds to the realism of the system. The helicam is a dynamic camera, so playing a replay twice will result in a different result each time. The other cameras provide consistent views, which is how I was able to seemlessly cut between sequences in the above video.

 

Here's the above sequence using the custom cameras for the majority of the video, instead of the helicam.

 

For some reason, YouTube has turned the quality of these videos to crap. They were 960x600 (half-size) videos at 5MB/s and they're now shitty quality 480p. And you can't replace videos, only delete and re-upload. *sigh*

Shortish video showing Circuit Mode in my replays and camera system. I can now define a sequence of cameras and tell the replay system that they are to be used as a continuous circuit, instead of a single linear sequence. These means I can run multiple laps around the GP circuit mods and get race-style replays on them. This is hopefully a better quality video than the last one, I recorded it at 1280x800.

 

Beyond the solitary vehicle... (Initial Prototype)

Create multiple compatible replays and then pick and choose which of those replays gets used. Just want helicopters. Just want cars? Want them all? Simply create a playback list, set the effects and watch it play. Soon to be added is the ability to select any of the playback vehicles as the one the player will use, which in turn will drive the custom replay camera system, for multi-vehicle custom replays.

 

New feature added to my replay system today, Follow the Leader mode.

Up till now, the camera changes have always been triggered by the player vehicle hitting the trigger points. But I sat today thinking about real racing videos, or police chases, where the camera might not always want to stay on the same vehicle. So this new feature allows the nearest vehicle to switch cameras, rather than the player. So in a race video, the camera can always switch to the leader. If you were making a police chase, you could set a camera away from the action, which would cut to a police helicopter or intercepting vehicle. If you did a military scene, you could cut to various vehicle types, simply by moving the camera trigger into their path instead of the player. It basically opens up a new level of freedom on what you can do with this replay system.

This is a short comparison video, the first section is with the cameras working as normal, the second section is with FTL mode switched on.

 

Well I spent all day today battling with multiplayer peds but I finally have these:

This is a pair of standalone addon peds, that are fully customisable with the full set of racing suits. So that's 2 peds in 14 branded suits, that can be used as AI drivers in my replay system.

To cut down on size, the YMT files have been stripped down to bare essentials. That means a single hairstyle for the woman and a bald head for the man. I tried to pick a female looking face for the woman, although that's a fair old task with the MP females. There are no additional drawable options, just the texture variants but by doing this, it means the suit can be configured with a single variant value, so I can pick a random number and then configure that complete suit based on that single number... which makes ensuring unique suits is easily done. So added to the unique livery option I added, it means that a race replay can be built with no copies of suits or liveries.

If I can ever work out how to get the helmets to work, I can avoid copied heads as well, they'll be hidden inside the helmet. Plus with a little bit of work, they can be expanded to add even more texture options to the suits. I think the one thing the ped collection was missing, were some that could be used in racing environments... not any more. :D

Since posting the original suit images, I have now created a fully matching set of glove textures for each suit. I also have the helmets working (in a fashion) so I now have proper AI racing drivers.

Okay... so these mods are done. I am going to post this one last playback video and then perhaps one more that shows a full sequence from recording, to camera placement, to playback. Then I am going to concentrate on some proper videos with them... no fun making things if you never use them... right?

 

Finally got around to making the "Making of a Replay" video. I had to split it into sections because unverified YouTube accounts have a restricted video length. So it's a 4-part playlist, which means you don't get overloaded with my unexciting videos all in one go I guess. ;-)

 

Update 19-03-2019: Fixed a couple of bugs in the Save Presets and Save Projects functionality. Switched Presets over to serialised XML. This was the final update required to get LCA into a working final state.

Update 15-06-2019: For some reason, I got the idea to add some time based additions to LCA. A timed camera that changes after a fixed period of time, plus some effect and timescale functions. I have no idea why I added them, I don't play the game now, so this mod just never gets used, it was a perfect example of modding for the sake of modding. Not for fun or enjoyment, purely because that's all my head knows how to do.

Anyway, there's a video here that is only available on this link. I have stopped making them public as I suspect people are getting pissed off with my public videos. Can't blame them really...

I don't know why I wrote that because you know what, if the only reason you don't like something, is because you can't have it, then boo-fricking-hoo. The internet is full of videos of things you can't have, whether that's physical posessions, physical or mental ability, hot women etc... "Can't have" is not a valid reason for "don't like" and if you don't believe that, try rating a mod 1 star because it won't work on your XBox and see how fast it gets classed as "invalid". Can't have... don't like, is just the foundation for jealousy, instead of getting jealous, learn some skills and get creative instead. I'm sick of hiding things in a corner because someone might get upset by it... deal with it. Don't like what I do? Don't watch the videos!!

 

Update 02-07-2019: Added single int for ControlJustPressed and another for ControlPressed, which compares with a list of flight controls, like VTOL mode and undercarriage mode. While playing back, if it finds a valid control value in those settings, it activates the control. That just allows for proper flight recordings, where the changes of things like VTOL mode makes a difference to the visual effects, especially with the Hydra and Avenger.

The downside? Well it renders every single LCA recording redundant.

Is that bad? Well, I am pretty sure that there could be a conversion app for that in a very short space of time. It would also give me chance to think about integrating a header into the replay files with other info in there.

Update 03-07-2019: I fricking hate Rockstar at times... there are two words that describe them perfectly, incompetent and inconsistent. I wrote all the key-recording code for LCA so that you could raise and lower landing gear, change and fire weapons, activate VTOL...that kind of thing. Then I wrote all the header handling code, so that the landing gear and VTOL states could be saved and used at the start of playback. All seems great right?

Called the Function that checks if the vehicle has landing gear... crashes with helicopters, whether they have landing gear or not. Great start! Spawns a Swift helicopter, take off, raise gear, fly around, lower gear, land... all plays back perfectly. Spawn a Savage, landing gear doesn't respond to the landing gear key, same with the Akula. It also doesn't respond to the recorded keyboard controls either.

Now as you probably know, the default landing gear control is the left-stick press on the gamepad, which of course is also the same control as is used by the vehicle horn. Spawns a Dominator, drives around, presses horn, annoys some pedestrians, all plays back perfectly. Spawns an Ambulance, doesn't respond to the same horn control.

I mean seriously, if a control is supposed to activate a function, how on earth can the same control not activate that function? This is what I mean about inconsistency, it's the same with the roadside objects that are on the wrong side of the road. It reminds me of that old saying, that if you put a bunch of chimps in a room with a typewriter, they'll eventually create the works of Shakespear... I think Rockstar use that as a development ideology. Except in this case, I think there are closets with a computer in and each developer works in isolation, so they don't have a clue what everyone else is doing. The producer is probably sat on a beach somewhere, spending a vast amount of those Shark Card profits, instead of doing a decent job of it all.

The harsh reality seems to be, developers are turning to shit and people are paying an increasingly high price for the shit they produce. So the end result for me, is that I have no idea if anything I have done today, is of any use whatsoever.

HA!!! I now want to punch myself in the face with a hammer... none of that works for NPC vehicles, because you can't set their controls... let me get my typewriter. FFS!! Why don't I realise those things while I am doing them, instead of when I have finished them? I give up, the world wins...

Update 04-07-2019: Well yesterday nothing worked, today, everything works. Gear raises and lowers on all aircraft and helicopters, VTOL works on all aircraft that use it and sirens work on all vehicles that have them. Instead of monitoring the key-presses, which were useless for NPC vehicles anyway, I just monitor the states and record them. Then during playback, set the states to match the data, that works for all vehicles.

Update 05-07-2019: This, that and some other stuff. First off... ooops, seems there was a bug that kinda caused a problem. If you're doing an air vehcle replay, it leaves the traffic in the world, because you're in the air... right. Well it seems that if you're in an air vehicle but your replay has NPC-driven ground vehicles in it, they're going to hit lots of things, because the traffic will still be there.

Re-configured all the replay data to include an uncompressed header section. That meant I was able to add this:

As you change the clip-selection in the menu, it now pulls the header from the replay file and displays the info below the menu. It also means better data extraction when you load the replay file, because useful info is already in the header about how many replay states there are. The reason the header section is uncompressed, is that it keeps that section a consistent size, so I can read a fixed number of bytes from the file. It's really quick, there's no delay as you switch menu selections.

Had to build my own set of LandingGear enums, because SHVDN has 4 states, all well and good but the game has 5. "SHVDN in missing values shocker!", is the headline you won't read anywhere.

Update 08-07-2019: Finally fixed the iffy auto-zoom.

Update 10-07-2019: Added a new camera modifier to Camera Placer and LCA. Also fixed a bug in Camera Placer, where inserting a camera created a new camera but with the trigger position in the last used location.

The new camera modifier is called a Push Camera. How it works, is if you turn it on for a camera, when you hit the trigger, it stores your Velocity.Normalised, to create a direction vector. Each update, it takes your speed, multiplies the direction vector by it and then applies a modifier value of 0.1 to 1.0 that you select in Camera Placer. It effectively creates a tracking camera, as long as you are travelling in the same direction that is. I added it while doing some helicopter flights in LCA, it's something the GTA V cinematic camera does. But what I noticed about the cinematic camera, is that it rarely appeared very far ahead of the vehicle, so it always felt more like a chase cam.

It was simple enough to add and just adds one more variation to the cameras. I might upload a video soon, as it's a bit different to my usual race videos... yeah, that's going to go down well. :-P Annoyingly though, doing this video exposed more problems with how GTA V works. Particles only spawn based on distance from the player, so when you switch to a vehicle too far away, you get no particles. Also the damned LOD switching... really annoying how the LODS are player/gameplay-camera based and not "general" camera based.

And then there was the issue with NPC drivers screwing up, unless you were driving nearby... and then finally, ENB... I have no idea why ENB screws LCA up. Tried it in my eye-candy version that's locked to 30fps with ENB and nothing was playing back right. Went back into 1604, locked the game to 30fps with the half-vsync option and everything played back fine. I wish I had a PC that would play it at 60fps, but an old CPU, a dying motherboard and a GTX1080 just don't cut it.

LCA and CP have now switched over to using XML for the camera files. I don't like it because the filesize has gone up by about 500% per file but the files are easier to deal with when things get added. No idea why I am doing all this mind you... my brain just feels like it's on auto-pilot some days.

Update 16-07-2019: Added new vignette effect to LCA, along with a couple of value tweaks to Camera Placer. Main one is a reduction in the radius limit, so you can choose a 5m radius for more precise placement. Also added some code that adds the helmet to any pilot spawned for a vehicle, such as in the Cargobob pilots in my latest video. Just a small detail that adds to the authenticity. It can choose either of the full helmets, for a bit of variety.

Update 17-07-2019: Added multiple replay handling to CP, along with the header info. Also removed the need for the model string to be part of the filename, as that's all included in the file header.

With this small extension function, I can pull the header from the file, without having to load the file, meaning all that info is quickly available. This is why I kept the header part of the file uncompressed.

        public static HotlapHeader HeaderFromFile(string filename, int headerSize)
        {
            byte[] headerData = new byte[headerSize];

            using (FileStream fs = new FileStream(filename, FileMode.Open))
            {
                fs.Seek(0, SeekOrigin.Begin);
                fs.Read(headerData, 0, headerSize);
            }

            return HeaderFromBytes(headerData);
        }

One of the problems caused by how I chose to write LCA, is that the cameras placed are not time based, they simply exist at a location and get activated. As I mentioned somewhere I can't remember, this means that I don't know where vehicles are relative to the point in time they will activate a camera. There are two ways I can solve this, a bad way and a good way.

The bad way is to distance check the replay path nodes and when I find the nearest one, I can calculate its time and display markers for each replay path at that time. Even though I only sample the full replay file to get a smaller amount, it's still 300 nodes to distance check, so it's not ideal.

The good way would be to implement a time-based slider at the bottom of the screen, which I can drag left and right through the time of the replay. I can then display markers on the nodes that correspond with the slider value. The slight problem with that is all replays aren't the same length, even in the same project. For example, the Barracks replays are about 5' 50" for the video on the main page but the Hydra is longer, because it carries on after the Barracks vehicles have stopped moving. So if I have the Hydra and a Barracks replay loaded, I have to make sure I don't try and place markers at nodes that don't exist in the Barracks replay.

Update 22-07-2019: As per the idea in the last update, the time-based slider has now been built into Camera Placer. You can drag with the mouse, click any point, or use the gamepad triggers to move smoothly back and forward through the timeline.

Instead of keeping the markers, I now show the actual vehicles instead, each with its own path for the next 30 seconds or so. This means I can now see where all the vehicles are at any specific time and know where each one is going to be. This should make placing cameras a much more informed process, which should make it a quicker process. As much as I liked the mystery of the end result, time is finite, so things need to work quicker. Although saying that, I probably won't make any more videos, such is the way life is right now.

Anyway, short video showing the evolution of the replay helper in CP.

 

What this video doesn't show, is how the helper handles the different length replays. As you can see in this image, there is a red section at the end of the bar. This is the period of time another replay extends past the end of the selected replay. Everything is relative to the longest replay, so things change and adapt as replays are added or removed.

One of the main reasons to use this red area, is to maintain consistency over how many states are represented by a fixed size of the slider. This ensures the replays all stay in sync, without having to mess calculating ratios etc... It's also useful to see where one replay ends in respect to the whole replay length.

Well what do you know... I just found another bug in LCA with the left-stick input... oooops!

Update 24-07-2019: One of my many bad design choices was to not have a Remove Cameras option in the menu, meaning once you had loaded some cameras, you had to clear everything to get rid of them. So I have changed that by adding a default "None" option to the camera list and the cameras are now loaded when you choose a playback option. If "None" is selected, no cameras are loaded... which makes much more sense.

Also decided to add a Delete Selected Clip from Disk option, to clear out unwanted clips. They get sent to the recycle bin instead of being permanently deleted, so you can always get a wrongly deleted file back. It does also ask for confirmation when you delete, so making a mistake requires quite a bit of effort.

Ooooh, and I added a Path Prediction line option to the menu as well. If this is selected, it draws a two-part line showing where the other vehicles during recording will go in the next second or so. It just gives you a momentary warning when a vehicle is about to change direction, possibly more useful for formation flying, when you can be ready for the lead aircraft to start a manoeuvre,