Happy New Year! (oops, slightly soon) I bring you a New Year's present. The future is here! I present you the Ovo 11. The most advanced vehicle as of 2150. A simple, fast, safe and personal way of travelling. (imported from here) So, I was working on the aerobatic aircraft ejection system, I ran across the problem of having to stabilize the seat and make it alway go upwards. That is, if you are flying 90º banked or upside down, you still want the ejection seat to push you upwards. So I was forced to investigate a lot, in order to accomplish that. And then I thought about bringing this idea one step further. So, esentially this is a very sophisticated, stable and controllable ejection seat... Yeah. It flies thanks to a bunch of thrusters that work together in order to make the vehicle stay still and accomplish every movement. I've honestly learnt a lot making this. Not only about BeamNG, but also about programming, PID controllers, certain algorithms and a bunch of other stuff. The movements are not faked, I mean, the movements are not hard-coded and the vehicle is not avoiding any physic's law. A lot of times each second, calculations are made in order to determine how much thrust to apply to a total of 12 individual thrusters in order to precisely accomplish the user input and the required stabilization for the vehicle to remain as still as possible (no easy task). I'm very happy with the result, though it's no perfect at all. It natively adapts to the 'environment', it tries by itself to counteract wind, and even gravity, I think it's the first vehicle to 'properly' work on Sun gravity . Thanks to the power of thrusters! As you might guess, 90% of the work time for this has been spent on the lua side of the vehicle. And modelling and texturing (texturing? I don't know what that is..) have been the least important. So the model is actually pretty simle, but I thing it does it's job quite well . This is probably the final version, as I honestly don't want to work on this any more . I'll maybe do some fine-tuning on the jBeam, on the PID values, or I'll fix any important problems you might find, but I don't have in mind improving it much more. In the far future, I might consider revisiting this and maybe working on some cockpit or mesh details. Keep in mind that it is still an "experimental vehicle". Expect it to randomly start spinning like crazy or other unstable stuff to happen. In which case I suggest you re-spawn immediately . Epileptic inducing images might be displayed, with quickly changing flashing stuff on the screen. I've literally spent 0 time in making this thing good at crashes. So, don't expect it to behave nicely. The Jbeam and the 3d model have never been my priority. In fact, the 3d mesh and the "roundish" Jbeam were almost the last thing I made. For a long time this vehicle was just 8 nodes forming a cube and connected by some beams. And most of the 'thrusters magic' was developed with that cube. This was just an experiment, and my only goal was in the 'programming/algorithm' part of the project. (imported from here) Please read instructions below, as this vehicle is not controlled like any other. Instructions:↑ ↓ Arrows Increase-Decrease wanted speed along Y axis (forwards - backwards) ← → Arrows Rotate left-right F-H Keys Increase-Decrease wanted speed along X axis (left - right) T-G Keys Increase-Decrease wanted speed along Z axis (up - down) These are the basic keys needed to control the vehicle. It might seem very difficult, but it isn't. Anyway, just start randomly pressing the keys and you'll learn to use it . Though it can take some time to master . Remember that this is not controlled at all like a car, neither like a plane. Up and down arrow keys increase and decrease your "target speed", this means, that, on release, the vehicle will remain at the speed you left it. Don't expect the vehicle to stop if you are not pressing any keys, it won't stop, it will remain at the same speed you left it unless you counteract the movement in some way. Pairs of the above at the same time Will stop the movement in that axis. -E.g. pressing Up and Down keys at the same time will stop the vehicle from moving forwards-backwards. Same applies for F+H and T+G along it's axis. E Key On/off global switch button. The vehicle starts by default in an 'off' state, so you will need to press E once to start moving! Y Key Resets all your speeds back to 0, it's kind of a really effective parking brake that works in 3 dimensions. Though it's not a toggle, you'll move again just by pressing any of the required keys, No need to press Y again! P Key Toggle on and off the "altitude lock" feature. Try it by yourself to understand it . It is also a quick way to stop climbing/descending in a certain moment. Remember that this vehicle flies in 3 dimensions, don't expect it to go up-hill just by itself, you'll need to press the required keys in order to remain at the desired height above ground. That's all you need to know for it's use in most cases . Advanced Commands (feel free to skip this part) This intelligent vehicle is also capable of travelling on it's own! Though, the only interface available in order to "talk" to the vehicle is through the command's console. Note: make sure you have your seatbelt fastened before you try any of the following, the experienced G-forces might be high, really high. (oh wait, there's no seatbelt ) Make sure your console is set to 'BeamNG - Vehicle Lua' mode, otherwise any of the following will work. (imported from here) All of the commands need to have written 'ovo.' in front. Any of the following tasks can be stopped at any time by pressing Y, or via the stop() command. setAlt(alt) -- Makes the Ovo go to the desired altitude, (in meters) e.g. ovo.setAlt(1000) <-- climb to 1000 meters. Keep in mind 0 meters is not always the ground! You'll end up crashing hard to the ground if you think so . But if you are in flat maps like GridMap make sure you try sending the ovo.setAlt(0) command in order to see the vehicle 'smoothly' landing by itself! setHdg(hdg) -- Makes the Ovo go to the desired heading (in degrees). Being 180 the direction you spawn.e.g. ovo.setHdg(90) <-- Rotate towards 90º. setVy(vy) -- Sets the Ovo speed along the Y axis (forward - backward, same result as the Up-Down arrows), in m/s.e.g.ovo.setVy(50) <-- Move forward at 50m/s (180km/h) setVx(vx) -- Sets the Ovo speed along the X axis (left- right, same result as the F-H keys), in m/s. e.g. ovo.setVx(-10) <-- Move left at 10m/s (36km/h) setVz(vz) -- I hope you can guess how to use this command.. Now, here's where the fun starts, kind of . track(id) --Sets the Ovo in a 'mode' where it continuously rotates to look another vehicle. It tracks with it's sight another vehicle. You are still able to control the vehicle in the normal way, except your heading is locked towards the target vehicle. id: should be the 'id' of the wanted target vehicle. In most cases it should be 0 or 1. e.g. ovo.track(1) <-- Tracks another vehicle whose id is '1'. follow(id, dist, alt) -- Sets the Ovo in a 'mode' where it continuously follows another vehicle. It becomes essentially a 3rd person view camera for other cars . Altitude can/needs to be manually controlled. id: Same as above dist: Maximum distance from which to remain from the followed vehicle. In meters. A good value is 4. But the value can be changed on the go by just resending the command with a new distance. Never set it to 0, bad things might happen . alt: Height at which to hover above the followed vehicle altitude, so you don't scrape the ground . In meters. Something between 1 and 8 is suggested. Don't introduce this value if you want to control the altitude manually: follow(id, dist) e.g. ovo.follow(0, 4) <-- Tracks vehicle 0 at a maximum of 4 meters. goTo(x, y) -- Sends the Ovo to the specified x, y location. Same coordinate system as in the world editor. e.g. ovo.goTo(0,0) <-- Sends the Ovo to the centre of the map. stop() -- Same as pressing Y. Why would I want to type the command instead of pressing Y? I dunno. I'm just here to tell you the available commands... e.g. ovo.stop() So, as you see, it is a very simple and very complicated vehicle at the same time. Imagine you are in a submarine, it's pretty much the same. Well, it's a submarine that goes through the air. And it's a submarine that can go as fast as almost 2000 km/h.. soo, whatever. Installation: Drop the zip to (documents)/BeamNG.drive/mods Without extracting. Aaannd Have Fun! (imported from here) DO NOT RE-UPLOAD TO ANY SITE PD: Did I break the record for the longest OP post? I'm sorry, I had to PD2: All speeds are capped to 500 m/s (1800km/h). Sorry, but it's done to prevent some very unstable stuff from happening.. PD3: The vehicle doesn't know where buildings, objects or hills are. Keep this in mind! Download the Ovo_v1.6.zip file for the latest version of the mod, the other files are older versions that might not be compatible.