The Bird of the North - Dev log
Hey there,
Here i'll be sharing how i created this short game, by responding to my own questions.
First the process is quite simple and not perfect since i'm not a professional dev, the goal of all to that is to explore and learn.
If you didn't play the game yet, go for it ( it's free ) : https://ulric-leprovost.itch.io/the-bird-of-the-north
Here are all the main questions i'm answering.
- How does it start ?
- The original idea ?
- Final idea and game design ?
- Blender & Puppets
- So, Godot ?
- What about this dither render ?
- Sound design ?
- Post Mortem
How does it start ?
This project came from the ideas to finally released something : 1 year ago i start learning Godot engine and i start working directly on a commercial game on my free time, the night. It's was not the best idea, since i was learning the engine, i was doing lot of mistake : a bad scope, a complex game design, focusing on visuals etc... i was mainly learning everything that i wanted to do instead doing a game.
But it was finally a good year since i learn't how to use godot, create shader and more.
That's why i wanted to give me a shorter goal, like a free tiny game in 1 months with a simple scope for myself, with a game idea inspired from a concept i like ( here return of the Obra dinn ).
The original idea ?
My first idea was to reuse lot of elements from my last project, to win some time and becaues i still liked what i did. The game idea was : you play a spy seagull, your mission is to fill in the map informations : so an investigation game Player will interact in 3 differents scenes : a desk board scene, a top view scene, and a focus scene.
The Desk scene
After reflection and test, the scope of that project was still too big, and the gamplay still inexistant ?! First i decid to remove the top view, because i couldn't see what gameplay will feet here with the investigation one. And if you have already levels location on the map, so why a top view 3d map scene ?
So on this side it was clear i could remove the top view scene, and focusing on the focus view where the main gameplay will be.
We even could find the next levels in the focus scene, for a non linear game it would be perfect. But i choosed a linear game since i don't have enough time and all the gamedesign non linea difficulties it's creating.
It's a good idea to keep in mind if i would go for a commercial game on this one. Like Obra dinn isn't linear since it feet perfectly for a investigation game, which is not the case anymore with my project since i got a different idea.
Final idea and game design ?
After all that test, i got the idea of what will be the final game design ( since it was inexistant ). I wanted something simple, where player can use only one click to play. So i was thinking, why not attribute dialogues to characters in the scene, and you explore flying through birds? like you have a comics, bubbule empty, and you need to affect the good sentences in a logical way.
Player will need to be attentive and explore the scene to choose well.
( list of sentences example from the game )
( fly and explore gameplay )
I did some test and it was working well, and not so hard to create in godot. On the first version i gave the posibility to the player to zoom where he want, with click right on the mouse. But, when the sentence options panel is open, i got some problem of "priority" : the zoom could be back automatically are keep zooming when the panel is open. I didn't like it so i went for an automatic focus zoom on the elements. Not the best but it's a game design choice. Then everything can be done in just one click.
So i went for that ! and start working on a first scene.
At the point it was all about level design, to create point of view in in the way that player can connect/find logic depending with the context.
( an exemple here with the strikers leader, if you focus on him you can see somebody behind and a bird to move on. With the context, it help to find the good sentence for them )
( another example with the sisters escaping and the lighthouse keeper )
Blender & Puppets ?
For the low poly models, i used Blender since it's open source as well.
I choose to go for low poly models because it's a nice esthetic and it feet well with the dither render i wanted.
( the Captain and his "gloves" hands to win some time )
With a simple parent setup, i could easely create a kind of "puppet", like in Stop motion animation.
For draw calls, at the end, everything is merged and imported in godot as a .blend
For the levels : it's a mix of 'prefabs' scene in godot and full scene from Blender, like the sinking boat is almost an all in once scene from Blender. The Lighthouse scene with the Monastery is a mix with bigger and shorter elements ( more classic like i did the level design in Godot, putting trees there, tiny houses etc )
the Monastery for the lighthouse scene
For the export :
Everything is merged in group after, by logic > npc sharing the same materials together, enviro all together using 3 materials, Dark, medium, and snow one, there is a lit material as well for source of light )
So, Godot ?
I used godot because it's open source, and since one year of testing and learning i got very confortable specialy with the node principe and the data ressource management .
For example with the sentences idea, i created a ressource class for that :
( data resource in godot used for sentences )
Then i just needed to create a new ressource of type Npc_data with what i need:
And Done ! Of course if i want to implement localization i would go with a javascript variable etc but i didn't go for that, question of time.
And finaly, to check when the level is done, i just create a checker function :
Everytime player affect a sentence, the func is call and check all Npc _choosen_words, if all condition are true, the level is done.
What about this dither render ?
One of my motivation on this project was to go for a dither black and white render, like an old 1920 film ( the game take place in 1921 )
But no purely black and white, i wanted a warm render for some light to capt player attention. And the water with a cyant for the cold aspect of the see, so 3 colors in all. Black and white and a cold and a warm one to catch the eyes.
It would be easier without dither, specialy that i'm not a shader nerd as well. But hey, why not learning as well ?
Last year i already did lot of test about this kind of render with the visual shader node graph.
The first think a was looking for is the dither node ? like in unity, it wasn't existing so i have to create my own with an expression node :
I try and fail and i get some help on the godot forum see this topics : https://godotforums.org/d/36251-dithering-node-unity-to-godot-4 ( thanks @xyz)
here the dither node, working like the unity one.
The dither node was solved, but it was just a start for that current project. Maybe I could do everything on one shader, but as an artist i was like : maybe i could seperate the flat pass, the light pass and the light warm pass ? then i can affect the dither on thoses seperate element the way i want, but how to do that in godot ?
The solution came from the Subviewport, indeed i could select what element to show in this "pass"
So i created 4 "pass" in godot using the Cull mask :
If you know the cull mask logic, you know what it's meaning : for each pass the 3d element need to be active in this pass as well.
But since i want the element on a different pass, i need for each cull mask a different 3d element , capisce ?
here an example:
The 3d model is duplicate for all the pass, in case it will be affect by light or a warm light. Maybe it can be very bad for performance, but there is no animation on this project, and only low poly models, but i'm sure there is a way to optimize that, as always.
And don't worry, for big scene the light pass is a merged element in blender :
So i don't need to duplicate all the tiny 3d element for each pass, juste once. This is the kind of think where i could get time to create a tool, but i'm in game jam mode and not productions mode so it will be that.
Now let me show you the pass with more details ( with the desk scene as example )
We have the flat pass :
No lighting, only a kind of AO dither texture painted in blender or random gradient, apply on the object shader ( didn't have the time to paint all element in the game, but that would be the goal of a commercial version since visualy it's better )
The light pass :
A simple light pass without dither yet
And the warm light for the candle and the lantern
No dither yet as well since it will be in post process, you will see
With thoses 3 pass setup i could statt to cook in the visual shader graph.
First i create a texture rect:
and create and apply my custom visual shader material on it:
Here the general shader :
( dither is apply only on the light pass, and warm pass, so only shadows and light have a dither borders)
In the first test the result was ok, but the dither was strong and doesn't help for the visibility: I wanted something smoother
So i went merging the warm pass without dither and the one with a mix:
( a simple "Mix" node )
Now I have the low poly dither render I wanted ! :)
Like i said i'm not a profesionnal in game industry, but i was so happy to see that i can cook that in godot after some effort !
Sound design ?
(My favorit parts)
For sound design and music, i’m using mainly Ableton live.
I also i have a personnel sound library build from years. But like lot of sound designer, i'm fishing some sound in many source ( internet, mic ). One day i went to see a film in theater and i recognized the sound effect, and i was pretty sure it came from that documentary where i got the same sound effect for a student projet : Sound is about fishing and mix. Of course you need to respect the copyright : but usually it’s about 1,2, second sound effect…you know
For the main sound effect, i created a loop for each scene like this :
For the sinking scene, It's a mix of sea sound, seagull, wind, a train for the engine, Bell etc Everything logical that give life to the scene
I play a lot with some basic effect like EQ Three, for low impact effect it's perfect
For the music i used the free vst plugin of the BBC Symphony Orchestra : https://www.spitfireaudio.com/bbc-symphony-orchestra-discover
It gave me the opportunity to create moody little composition, with percution and basses.
Inspired by the old black and white movies music ( Bernard Herrmann ), the goal was to create short music/mood for the tension and drama of the scenes.
Mix with an Akai short keyboard to do the job ( i put a doggo for the scale)
Here the result of the first music :
The music is not great but good enough for a 1months and a half project i guess.
I did 4 of them including with and without loop ambiant sound. ( when the music is done in a scene, start the loop one )
Post Mortem What was not good at all :
- Should start with a better idea about game design before starting, and test idea and share them
- Scope too large, multiples scenes complexity for a short project is not good
- Avoid maybe complex render pass pipeline next time, it was fun here but i’ll go for something more classic next time.
What was good ?
- Reusing what i did in the past
- Focusing on my strenghts for short project
- Don’t be afraid to do sacrifice, it’s for the best
- Once the concept is found, it get faster since everything get logical
- The pipeline blender to godot is great
- Test build project during all the process
- Testing the game with friends
- 1 month and a half is a nice “personal game jam “ time for me.
That's it ! of course i miss lot of thinks, i'm sharing what seems important for me.
So, If people are reading this and have any question or sugestion about my process, pls feel free in comment.
Ulric
Leave a comment
Log in with itch.io to leave a comment.