Gameplay Programmer at CD PROJEKT RED - Programmer
Hello, My name is Jacky. I am a programmer by trade so i have to admit i'am not a very artistic person. This challenge seems fun and challenging. I will try my best to explain everything from art and technical standpoint how i do things.
What is NEON? Neon is the future and new way of travelling. The purpose of the submission is hopefully by the end of the video. I can convince you to buy a Neon.
08/12/2017: Voice over version added. I also have confirmation that there's will be Japanese version! so stay tuned!
09/12/2017: First scene update.
10/12/2017: Had to move to Warsaw for work purpose so i have to pack all my stuffs include my PC.
29/12/2017: Got my PC back! Race scene Update.
07/1/2018: Remove Adam's assets because it's not allowed and also it make my PC hot.
08/1/2018: Add download link
Since we are pretty big deal advert agency we are dealing with pretty big budget. Our budget for this campaign is $10.000.000
Morgen Freedom voice over fee $10,020.000
Unity Asset Store
Total is $143.36 but all of the paid are already owned before the challenge.
Space Ship Omega Fighter RED $1.40
Sci-Fi Omega Fleet BattleShip Set $21
Sci-Fi Crates and Barrels Pack $14
Herd Sim Rat $6.96
HQ PBR Mega Kit $30
Extreme Sewer Kit $25
Suit Character Pack $5
War FX Free
Post Processing Free
Cine Machine Free
Concrete Textures by Yuhue Free
Retro Cartoon Car Free
Energy Hard Rock Pack Free
Fun Time - Johan Lilja Free
Inspirational life - Sound.com Free
We didn't use any custom assets in this project except the voice over, all assets are from asset store and public domain.
So we are short around $20.000. Therefore winning this challenge is a good way to recoup our loss before the debt collectors start to banging our door.
Reveal scene will introduce the product to the audience, how it's setup is pretty simple.
There's only few components in this scene.
The jet is the same model but with black material and full metalic.
The text is the 3D TextMeshPro. The text shader it self is already unlit.
There's 2 virtual camera in the scene. The static camera and the other one is the "shake" camera. I switch between those camera when the jet flyby.
Timeline setup is pretty simple and straight forward for this scene. Mostly only turn on/off with couple of animation. The audios also triggered via timeline.
I use motion blur and bloom to gives motion and glow effect since it's pretty simple scene.
This scene is where we show the capability of NEON. Usually vehicle manufacturer are against crashing their vehicle, but not NEON because it's built with safety in mind.
First i want to make a huge world with dragons, totally 100% science based. But it seems like it's too much work so i scrapped it.
Here's the scene setup that i came out with, it is a lot simpler than you think!
Also in the future we have highway that go across transatlantic and the scientists finally come to conclusion that the world is flat. Thus the road is straight with no curve at all.
The road pretty simple, no magic. It is only Unity default quad for the ground and the cubes as the barrier!.
How do you make the whole thing move then?
Simple answer would be this:
Don't worry the technical answer is a lot simpler than you think. It's just an UV offset!. I made custom shader that offset the uv overtime, but of course script based solution will also works!.
Here's the shader forge layout in case you want to recreate that.
In the distant future earth are over-populated so we need a huge building. Conventional vehicle requires garage and what if i told you NEON has state of the art anti gravity, which means that thing can float right next to your window! No need for garage!.
Since it's a night scene, the building need to be lit up.
So here's my final result
So here's where shader come to play, so basically how the shader works is it's sample a pixel from a noise texture from it's local position. We will get a value between white and black. Then we will use that "white" texture is a window with the lights on. That's pretty much it!.
The building is mostly a simple cubes, arranged vertically with random scale.
But of course we need a more complex looking, so it looks like a giant corporation building. So I use the battle ship and flip it vertically, also with the same shader.
Here's the shader forge layout if you want to recreate it!
Also beware there's bug!
Shader error in 'OneAperture/Mega Building': invalid subscript 'rg' at line 394 (on d3d11)
Compiling Vertex program with SHADOWS_DEPTH LIGHTMAP_OFF DIRLIGHTMAP_OFF DYNAMICLIGHTMAP_OFF
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME
But don't worry the error sounds scary but it's actually pretty simple fix!, you just need to delete the ".rg". The reason why the error pop up is because the "_Grid" is a single float but shader forge think it is a "Vector3".
I will file the bug report to the developer!. So for mean time that's how you fix it!.
Update: Building shader V2.
I added another non monochrome noise texture and multiply the result.
In order to show that NEON is the best vehicle ever, we need some sorts of user interface to show. Especially a lot of older people that never own anti-gravity jet before. So we came out with the dynamic panel to show all sorts of features and improvements.
PS: the NEON storage system is pretty awesome it can carry a week worth of grocery or a couple of "Devastator" air to air missile for your hunting trip (sold separately also come in pink color but limited supply).
So now here's where we have to get down and dirty with scripting!. It's pretty simple and straightforward.
OnValidate is very useful callback i use it to assign the text into textfield. It's save my time opening up the prefab and typing it into textfield. Save me a lot of time! .
Here's where the magic happen!
First 3 lines set the pointer (circle thingie) position to lock object.
Next 2 lines is to rotate the white lines towards pointer, I think you can also use LookAt callback (I'm not sure though). It's a simple 2D math to get the radian angle and convert it to degree.
Next 4 lines is to set the line length based on distance the line anchor point to pointer.
The rest of the lines is to update the counter and play audio.
In the future AI are very involved in human life. In fact AI has full control of the government. We have AI president for couple of decade now (Human can also became a candidate, but AI always win in debate so there's no point really), all AI president only reign for 1 period only because it always get defeated in election by new version.
The AI have to promote it self, by it's calculation the most optimal way of getting elected is show a trustworthy individual on projector billboard, so it generate it's own avatar by generating the most trustworthy avatar from personal info that available in his database (thanks facebook!).
So to make the projector billboard i use a shader that take a lot of noises, noises in this shader have 3 purpose.
The shader use world Y position and sample the noise and apply the specific function. Most noise are only 8x8 pixels images.