UAV SIMULATION
Creator: Umit Soylu
The description of the project can be found below:
- The user commands one UGV and tries to hit enemy UGVs. Enemy UGVs comes with two different identities; one is pursuers, which tries to hit the user and user should avoid getting a hit from them; the other one is fugitive, which flies away from the user and user should hit them.
- There is no specific graphical details about fugitive vs. pursuers, user should distinguish them via UGVs orientation; pursuers inclined to fly towards to user while fugitive does the opposite.
- There exists a counter for both hits and life; life decreases each time user gets a hit from pursuer and hits increase each time user hits a fugutive. There exists no possibility of user hitting a pursuer.
- When life reaches '0', game is over.
- UGV commanded with WASD and space. UGV always move forward but there is limited amount of Booster which increases the speed of user factor of eight via pressing space and ends when Booster reaches 0.
- When enemy hits user or users hits enemy, that enemy drops from the rest of the simulation.
Example runs of simulation
- User UGV with booster
- User UGV attacking enemies
- Game over where your life is 0
The process of creating the simulation is described below:
- Simulation uses three different models; one for UGVs, one for Skybox, one for planet that turns around itself. All of these models created via blender and all of the images are found via google images with basic search querries.
- All models are created with AMBO, SPEC and NORM versions of the images for better quality of images. GIMP is used to create these different versions of models' images. Each model is displayed with combination of 4 different versions of textures combinations generated by Blender->export THREE.js option.
- Smoke affect is added to the user's UGV when booster is used. It is a good representation of speed affect. Smoke does not have a force vector applied to it due to the fact that UGV orientation changes in real time which renders smoke unrealistic.
- The force vector of the negate of UGVs orientation is tried to added for smoke presentation, but it did not worked as intended. The force vector of smoke does not update in real time and each time step, the smoke needs to be restarted in order to provide realistic smoke affects which puts extra workload and slows down the simulation.
- The smoke with force vector is unexpectedly hard since system uses pass by reference for variables in general but not for force vector of smoke. It is something unexpected and couldn't be solved affectively and force vector part is ditched.
- Each model in the simulation has their own constructors and all functions needed for the model is declared inside their constructor. User UGVs orientation is computed according to the rotation and movement vector where similar examples exists in https://github.com/mrdoob/three.js
- It is decided that physics are not essential for this simulation and ignored
Some footnotes to keep in mind
- All of the models used to have high resolution images which were reduced by factor of 10 at the end due to computational requirements. Those high quality images are not exists now.
- The accurate smoke affect required a lot of work to properly display it.
- The skybox of the simulation has more than 10 versions, only one version make it to the end. Other versions are ditched due to low quality presentation at the end. These 10 versions of skybox adds upto 940mb.
- Anything related to the mesh of a model is pass by reference. It should be kept in mind to generate a clone of mesh to pass it in order to prevent unexpected behaviours of the simulation. A lot of debugging effort spend to figure out unexpected behaviours.
- In the beginning, more than one backgorund planet was intended but due to computational restrictions, it did not made to the end product.