GTA2 in JavaScript
Vello Vaherpuu, Morten Paluteder
Description
We are continuing GTA project from last year.
Repo
https://bitbucket.org/Jorich/gta_project
Goals
Vello - Developing new and replacing old models
Morten- Implementing some post-processing effects and their triggers
Final report
New models demo link - http://kodu.ut.ee/~vellov/GTA_project/
Vello - My mistakes and results -
Goal - My goal was to learn how to make basic low-poly models in Blender and later implement them in our project.
Beginning - I started about 5 models, finished 3. Learning it wasn't that easy as I expected. At start when I thought my 1st model was finished I looked over what I had done and found out that I had way too many vertices (about 15k), that's when I discovered that subdividing meshes is not the best idea and started all over again, this time with a goal to have less than 500 vertices.
Improving - 2nd model was much better, goal was pretty much achieved, a little over 500 but still much better than 15k :D. Then came the colouring part. It looked simple and it kinda was, until I tried to export it to project.
Problems - With exporting i had several problems - exporting to .obj and .dae didn't work out as I wanted to, some sides were transparent, some were missing, so I asked and got advice to export to .json with three.js plugin, which actually worked pretty good. After I got my first obj imported to the game I had another problem. Cloning didn't work as I wanted. Object3d.clone() didn't clone my material and so every car had the same colour as the last car. (after another car was added the others changed colour). So I extended three.js with deep copy functions. Also I had problems with texture exporting and didn't get it to work with three.js exporting plugin.
Good stuff - It was really fun and I liked it. It's like a disease - once you start modelling there's no stopping before it's finished. After 1st model, the others came much quicker. Erich explained code whenever I needed, so that was a big plus.
Screens
.obj and .dae problems -

jeep -


building -
ingame -
texture, that I couldn't export :(
Morten - My journey
Goals
- Add a post-processing framework to the project ✔
- Implement different post-processing effects from Three.js ✔
- Add event triggers for post-processing effects ✔
- Write a custom post-processing effect shader X
Beginnning My beginning was quite rough as I was not familiar with the existing project and getting it to run and understanding what's going on proved to be quite a challenge, especially as I thought I could brute-force understand it by myself. It was proved wrong by the ridiculous amount of hours I wasted before Erich helped me out.
Problems Understanding how to run the project and grasping the inner workings of the project proved to be the biggest obstacles to overcome. Once those were dealt with, there were some post-processing effect implementation problems but nothing a few hours of development and some fine-tuning couldn't fix. There were also some bugs that made it to the final version but they aren't gamebreaking and only trigger when postprocessing is enabled.
Overall Didn't meet one of the goals I had set for myself because I expected the Three.js post-processing effects library to be somewhat lacking but I was actually surprised how many options there were. That's why I was satisfied with using pre-built shaders and didn't feel the need to build one of my own. I also implemented more triggering effects than I expected. The most valuable lessons I learned had to be about managing time better though.
Possible future improvements
- More triggers
- Bug squashing
- Fine-tuning effects
- Increasing performance
- Options menu for persistent post-processing effects
Screenshots
Drugs

Getting hotter

Crash
