Tuesday, January 28, 2020

On Journey and destinations...


Sometime in April later this year, it's gonna be five years I'm working on LittleShadows without, yet, pusblishing it.

As cliché as it sounds, it has been a extraordinary journey and I learnt a million things along the way. I realized I could draw, may be not perfect, but acceptable elements for my game. I caused me a lot of trouble at the begining. I remember that I wasn't even able to draw a single straight line at the begining, and I was really putting all the process at doubt. Would I be ever able to draw something good that I could in my game?

That was hard. That was huge, but now I really enjoy the process and I'm delighted to paint in particular textures or light or shadows, things that make my environment looks more realistic. Painting is nice and relaxing, and I really enjoy the state of mind I'm in when painting.

So next time you have a hard time mastering something, remember, the first steps are generally hard and not really enjoyable, you have to seek pleasure in the long run.


I had also some bad times with my ideas. Or, more precisely, I had too many ideas which were not coherent at all, a complete mess of threads of ideas! That was a concern because I felt lost and deseperate, without being able to tell which idea was the best, which one I should follow, which one would help to have more view and foster interest among potential players.

At some point I then decided to split the game in two: one was a classic RPG named Ashes and Souls the second was and will ever be my beloved LittleShadows, my first game, my little baby!


I felt more confident in making it and felt empowered. I was making consistent progress. Slow, but consistent. At some point, at the begining of last year, I thought it might be a great idea to release a small plateformer using the theme of LittleShadows, but simpler  with simpler goals and achievements, in order to gain a bit of experience in the "releasing" phase of the process. But the game was so dull that I end up terminating the project itself to go back working on LittleShadows.

Then came the main idea, that I can't really reveal here. The central idea of the game, that I was more or less chasing all this time. I had a theme, I had some elements, but I missed one key element, a glue that would fit everyhting in place.

This idea came somewhere around first quarter 2019, a bit late after so many years of attempting the game making experience. But I knew that I was in there for a long run and all what I learnt wasn't just for nothing.

The journey worthed it, eventhough I realize now how many time I spent in dead ends.

I hope I'll learn from my mistakes.

Wednesday, March 20, 2019

Introducing LittleShadows!

Well, I know what you're gonna say. Five years in "production" (note the quotes) and still have to introduce the game, eh?

Making a game during your spare time is not an easy path, and I have been through, like most of game devs I guess, times of doubts, fear and desesperation. I changed my mind a thousand time about the story and the gameplay induced by that story. I wasn't clear in my mind, which is why I wasn't making progress in making the game. But the large majority of my doubts were coming from the feeling that I didn't get the right idea, the concepts I was coming with were not creative enough. So: no progress at all on the game side.

However my skillset was progressing starting litteraly from zero except on the coding part. During the day  I'm a developer for scientific application, a job I enjoy in a good company, but I don't have the thrill of designing my product. My logical brain is extremely active but my "artistic" brain is not sastisfied enough with it, so here I am.

There is more to it, of course. I have been dreaming making game since my parent bought me the Famicon, back in the late 90' (shame on them ;-)), but always thought that would be impossible. Back in the nineties, sure it was, but now that's completely feasible.


Let's go back to LittleShadows. It's a small atmospheric game, taking place into a dark world, where you have litteraly to control light to "kill" darkness. And there is a twist to it, that can't be revealed (spoiler alert!! :-) ).

I hope you guys enjoy the latest snapshot I'm posting because this is the way it will look. The story is straight and done in my head, and now on I'll be focusing on implementing the right gameplay for it. The story and the gameplay are deeply intertwined and it has to be subbtle.

But that's the topic of an other post !

Friday, February 15, 2019

LittleShadows, 2019 and release.

With the exception of a very crappy AngryBirds' clone, Little shadows is my first video game project. I've started joyfully back in the first months of 2014 but the game is still not released.

Why?

Because I wasn't sure about the game mechanics. My graphics were so so, specially the "color" palette, and I didn't known want I really wanted to build.

 In five years I've improved my skills a lot: in game design, drawing and developing game features using Godot, my beloved editor. I've start three dozen of projets, such as Ashes and Souls, Monster Island or the LightHouse Man. So of them are, to me, great and have some potential, but I still haven't finished my first game, LittleShadows.

This is the first thing I want to resolve in 2019 by finishing, shipping and (maybe?) selling LittleShadows.

I have scoped smaller levels, but more of them, each of them highlighting a specific feature. I have improved the visual consistency by sticking to a simpler color palette. I'm developping monster bosses and secret area that the player will have to find and unlock. I am, again, having a lot of fun developing this little plateformer in a limbo-like style.

I will try to finish it fast. Not because I think it doesn't have value but because I think I spent too much time being finicky. I'm going straight to the point.

I know what to build and how and that is a LOT of FUN !


Stay tuned.
 I mostly post on twitter https://twitter.com/thomas_laverne

Friday, March 16, 2018

Porting to Godot 3.0

Last weeks, I've been doing little things here and there apart getting organized. My main current struggle is porting littleshadows from the version 2.0 of godot to the 3.0 version. Godot is the game engine IDE I'm using for developing LittleShadows, a lovely piece of software extremely well designed which meet all the requirements of "how easy can we do things?" list. Even the hard one.

It's hard for me to be truly objective about Godot since I'm really loving it, however changing from version 2 to version 3 is a little bit of a headache for me. Which is a good sign, showing that the community (yep, it's an opensource project, dude, you can participate!) have been relentlessly developing and expanding it. But the transition from one version to the other isn't truly complete, just a mere tool to avoid to redo too much of work.

I completely understand, I'm fine with that! And the number of people having to port their game from version 2 to version 3 is probably very small (and their game also I presume). But, oh boy, it's a hard time for me. The community (well, Rémi and Juan :-) ) has been very helpful anyway fixing bugs almost on demand, in particular on specific bug I had on the import of the rotation properties in the AnimationPlayer, the node responsible for creating and editing animations (moving nodes, sprites, creating particles, etc). The rotations were inverted, meaning that most of my animations were going backward instead of forward!

Then many other things went a little bit wrong: methods in animations weren't there anymore, the opacity property has been moved to the color selector (meaning that all tweaks of opacity during animation were... cancelled), the particles system changed so much that I have to redo all of them, the lighting properties of the sprites have been changed to CanvasMaterial meaning that I have to recreate them as well. That was for the dark side.

However there are of course a  lot of benefits including: delaing with colors directly at the tilemap level, advanced options for properties, new KinematicBody2D with improved behavior for physic, and WorldEnviroment allowing to add screen space effect like bloom, blur, hdr etc... That's super cool and that motivated my choice to go for godot 3.0 version, plus all the potential of new bug fixes and support of new devs.

Sunday, February 26, 2017

Sundays afternoon with Godot: E01-Collisions

Varying the environment is necessary to make the game less boring. I give here some examples implemented in LittleShadows. You'll see how easy it is do that with godot! First, here is the resulting video:


First of all my main character, the little girl, has several collision layers and masks.

It decided to keep it easy however, you'll see how I dynamically manage some bit masks to alter the behavior. The first collision layer is used to collide against the main tiles of the tilemap which is used to create the ground and walls. The two layer masks are used to detect collisions against ennemies and objects. Additionaly, the collision layer no. 4  (and not mask) will be dynamically set when the girl touches the ground and removed when she jumps or the move down button of the joystic is activated.


Stairs: Stairs are important element of a platfetormer game.In the case of LittleShadows, the stairs are distinct elements from the basic tiles used to create the ground which are gathered in a single tilemap. n the contrary the stairs are a special "scene" or node.

In blue you can see the collision shapes of the the tilemap and in red the collision shapes of the stairs. In order to make a smooth transition between the ground and the stair there is a gap between them, allowing the collision shape of the girl to pass in front of the stair without noticing it. If the player wants to move on the stair he or she only needs to jump. The stairs are in collision mask 4 therefore as soon as she jumps the collision is not detected so she can pass through. However as soon as the Ray2d detecting the ground collides with it, the collision layer 4 of the girl is set back to true allowing collision.


Scaffold: The scaffold uses the same principle allowing to get down from it using the move down button of the joystic.

That's all you have to know to set interesting rules of collisions!

Friday, January 6, 2017

In-game footage

Sooner this week, I have uploaded an in-game footage of the game. I got some nice feedback from social network, which made me rethink the visual look of the backgrounds and the animations. Is always good to have some constructive feedback from people not involved in the dev process.

The forest bakground will change quite a bit and ressemble more to something like this, with more pale tones. 

I'm so excited! Moreover it helps me to construct the game's story and move it forward, so I can't wait building more elements and showing them. 
Soon !

Thursday, June 11, 2015

Water Splashing effect

Hi guys !

I've been struggling this week to make a nice water splashing effect, directly integrated into godot as a module. It has the advantage to appear has a node into godot's object selector, it simply create a new object looking "like" water with which the user can interact nicely. Here's the video


You can get the code (100% free) on my github rep https://github.com/laverneth/WaterSplash/tree/master


Friday, August 29, 2014

Game deployed on Android

Exporting to Android with Godot (and Ubuntu) is really easy. The main problem  get was to configure correctly my smartphone in order to enable USB apt by composing #0808 dial. The result is exciting, although now there are a lot of usability issues, but won't be too hard to fix I presume.


Tuesday, August 19, 2014

Introducing Little Shadows composer..

Some of you may wonder who made the amazing music of the trailer video (which is also in the game). So let me introduce Nature Zhang, the composer who accepted to make such a beautiful music for Little Shadows.

You may find more info on Nature Zhang compositions on his website:

Nature Tianran Zhang

Nature Tianran Zhang


Nature writes music for diverse commercial clips, trailers and games for both indie studios and large media firms such as China Central Television. His wide range of music styles include traditional orchestral music and electronic influenced modern film score. As a former Microsoft visual designer, Nature has the strong sensibility on visual media and filmic language. 

As the winner of 2014 NYU Film Score Competition, Nature's film score was performed in Broadway.

Thursday, August 14, 2014

Trailer for the Gamescon 2014

I was very excited to be able to present Little Shadows at GamesCon thanks to the Okam team who is developing the Godot game engine. Here is a preview of this trailer. Many things have changed in the game, and we're not very far from beta !!

Thursday, June 12, 2014

Using non-linear drag forces

I wanted to create a big ivy which could balance itself smoothly when the little girl was passing trough it. The best way, I think, for doing that was to create several segments of ivy. Each segment has a rigid body and a collision box associated to it, in order to deal with collisions with the little girl, and walls.



However, just by doing that the ivy behavior was shaky, even by trying to adjust the weights of each ivy segment to gain some inertial effects that could potentially solve the problem. It didn't help, so I decided to customize the dynamic integration system for the ivy, adding some friction to stabilize the system as mother Nature always does !

So I have just re-implemented the integrate function of each segment of the ivy, sharing the following gd script

You may realize that I didn't used linear drag forces, but non-linear, ie proportional to the norm of the velocity vector. This allows to stop fast motions faster than slow motions. You could even think of adjusting the friction parameter according to the velocity magnitude (for instance piecewise constant), but it's too many non-linearities for me today.

And here is the result...




Sunday, June 1, 2014

being a platformer

Some late Sunday night update ! I have finished the first tileset, and I have been able to construct a complete platform level.

Many details improved (altough the little girl motion and physics is still a bit messy...): platform design with leaves, moving platforms, lightings, interactions with stone walls, blue star badges, running hound... I think the global look is starting to be okay, and I will now start to add new effects to the little girl (magic spells), add sounds to make it more realistic and few animatimated ennemies or characters in the background.


Tuesday, May 13, 2014

Behind the stage

I'm desgining my graphical elements with Inkscape, which is a great, great tool. Here is an example with some concept art of the forest level... black platforms, blurred elements on the baground, glows, gradients... Really some effort is needed to make an appealing visual style...






For development I use Godot, which is a game-development engine: OpenSource , under the MIT licence and... supercool !! It has been released earlier this year in open source and this then the developement seems to go superfast. I'm very confident that it will very soon, in a year or so, compete favorably with Unity.




Here is a small snapshot of LittleShadows developement with Godot (you may notice that I'm using godot in Unity, but that's only my distro's name... :-) )
Setting the stage...

Setting up collision polygons to avoid interpenetrations

Adding few elements (trees, glows) to make the stuff a little more fancy...



First ScreenCast...

I guess that the design will change a lot, but I like this atmosphere... Many details are wrong (the little girl is more sliding than walking, collision boxes aren't perfect, gameplay is ... which gameplay?), but it just give a rough idea of what I want to do.


First concept art

I spit-designed (thanks Inkscape) some elements setting up the atmosphere a little bit...


The same, but with additional textures




Blog launch !

As soon I got my first NES, I wanted to create my own video games. I was around the age of 10, and I was drawing scrollable backgrounds (I guess it was just while playing 'the Adams Family' title). But I was missing the skills at that time, neither able to design or code anything, so my dream was hardly possible to come true.

Twenty three years laters, I am a professional programmer with a background in mathematical modeling of mechanical deformations, with a good job that I love and which challenges me. But I miss the creativity fun I had when designing the backgrounds of my ideal games.

So I decided to create my own platform game. Inspired a little bit (very much indeed) by 
Shadowplay: Journey to Wonderland, 


Limbo, 
and Outland 


but all those games were created by teams of skilled people... So, I just hope to create something nice that some people will like... and I'll work as hard as hell for that. This blog is the story of this amazing journey.