Uncovering the secrets of

indie game dev

Get all the news !

Never miss out any update.

Author: Oneiric Worlds

  • Silent Night & Demo

    Silent Night & Demo

    Hello everyone!

    If you’re following me on social networks, maybe you’ve already seen this, but just in case…

    Remember my last post talking about how I should (and do actually) create little games aside from my big one “Ekko – A Thief’s Melody”? Well, here’s a new comer: Silent Night

    It’s a simple game where you play as Santa delivering presents on his sleigh during Christmas Eve. Here’s what it looks like in action:

    Deliver all the presents!

    It’s an endless scoring arcade game with procedurally generated levels. The idea is to perform smart moves to maximize your score without crashing. The more you chain deliveries, the more combos you get. The more combos, the more points. Plus there are a few trick moves to get additionnal points. But actually, nothing is mandatory. You can just deliver the presents without bothering about the score and enjoy the Silent Night.

    The controls are super simple and are compatible with keyboard/mouse/controller/touchpads.

    So here’s a demo of Silent Night, the little chill game where you ride Santa’s sleigh and control the reindeers. I was waiting for the “Steam Next Fest” (starting on October, 1st) event to publish it, which gives a little more visibility to small indies like me.

    The demo is totally free, so don’t hesitate to:

    And don’t hesitate to wishlist it (even if you don’t buy it later), that really helps me to stand out in the mystic Steam algorithm. I will release the full game… a few days before Christmas of course.

    If you’re not into Steam, I’ve got you covered! There’s an online Web version on itch.io here: https://oneiricworlds.itch.io/silent-night

    I hope you’ll like it!

  • A new Hide n Seek Game + Demo

    A new Hide n Seek Game + Demo

    If you follow me on twitter, you may have seen some screens of a new game/experiment I’ve been working on. It’s now called “The Great Hide n Seek Expawdition” and it has a Steam page here:

    And a playable demo is coming for the Steam Next Fest (formerly Steam Summer festival) on June 16th! Don’t forget to wishlist the game to be notified.

    Here’s what it looks like:

    Yes, you’ll have to find many babies all around

    Actually, I started working on it a few summers ago, during my more or less traditional “A Thief’s Melody break”. And I thought this little game wouldn’t need much more work to become a full game on its own.

    What’s the pitch?

    “A chill find-them-all game with roguelite elements and local coop for little and big kids. Find all the animal babies that went hiding away in the forest. Play as a raccoon dad or a rabbit mum, explore the environments, find hidden treasures and bring everybody home.”

    It has procedural environments, a few animals and biomes to unlock, and splitscreen multiplayer.

    A cool technical feature: Voronoi splitscreen multiplayer. It was quite a blast to code 😀
    Day/Night variations
    White rabbits in white snow… You like a challenge?

    A New Game? Why?

    After releasing Slide, Animal Race, I discovered that it’s not that easy to make a living from creating video games. The game performed quite poorly despite all the energy I put both in the creation and in the marketing. I wasn’t expecting a hit of course, but it’s still below my worst expectations. So I thought it would be wise to make a few more little games on the go while still working on A Thief’s Melody, to have a better business experience and hopefully a greater community following my work before I fully release A Thief’s Melody.

    Many Projects at the same time

    So yes, I guess from now on I’ll have to work on my main project (A Thief’s Melody) and also on many little “side projects” here and there, to avoid putting all my eggs in the same basket. Don’t worry, I try to keep these games small. As a matter of fact, this one should be developed in less than 3 monthes.

    I hope you’ll like it! Stay tunes for news about A Thief’s Melody… among other things.

    Peace! Take care.

  • New tracks for Slide, Animal Race

    New tracks for Slide, Animal Race

    Hello everyone,

    A quick news regarding Slide Animal Race: I’m currently working on new tracks in order to provide more content (I’ve had some feedback from players about that). So here are a few screens:

    A track among cloud whales
    Another desert track that I designed with my daughter (more on that later)
    The Wave! A massive tsunami that should make everything upside down

    I plan to add more of course, and these should be released before the end of year.

    Peace, take care!

  • A few Blender tutorials

    A few Blender tutorials

    Hello there! It’s been a while! As always, I have many new things to share with you, and not enough time to write about it!

    But one thing at a time 😀! Today I share a few Blender video tutorials I’ve made while creating Slide Animal Race. It’s the making-of of the penguin character, from scratch to the final asset. Each video is 10-15mn long and present a single stage of the creation : modeling, texturing, rigging and animation.

    A cool penguin

    The audio is in French (so you can hear my beautiful voice 🤔), but hopefully, the video process is pretty much self explanatory so it can be understood by everyone.

    So here are the 4 videos:

    I hope you’ll like it! Peace!

  • 🐢 Slide, Animal Race 🐬 is AVAILABLE NOW!

    🐢 Slide, Animal Race 🐬 is AVAILABLE NOW!

    Hello everyone!

    📢Today is the big day! 📢

    After all this time of coding games on my own, my first official game 🐢 Slide, Animal Race 🐬 finally comes to release. I’ve been working on it for 1 year, creating every aspect of it, from code to graphics and music ! I hope you’ll like it 🙂 Here’s a little trailer to celebrate:

    If you can’t see the video, check it on youtube.


    It’s been quite a journey to get there, and I learnt a lot in many different areas (music, marketing, animation, level design, whatever, you name it…). 

    🙏Thanks a lot to everyone for all the feedbacks, the tests, the discussions, the cheering up… 🙏

    For reminders: 🐢 Slide, Animal Race 🐬 is a local multiplayer race game with cute animals, for little and big kids. In this game, you can:

    • Play up to 8 friends in split-screen
    • Play quick & fun races
    • Ride cute animals
    • Dive to avoid obstacles and gain boosts
    • Use bonuses & power-ups to outrun the horde
    • Find hidden shortcuts
    • Discover dreamy tracks
    • Play with younger players thanks to driving/riding assistance options

    Of course, the demo will remain free for everyone to test.

    And if you wonder about “A Thief’s Melody” (as I know some do), I still plan to work on it of course. This year should bring some news, and I also have other smaller projects to back it up too (because I’ve learnt that I shouldn’t put all my eggs in the same basket). But more about this later, it’s just the beginning of the adventure.

    Have fun, keep playing & making games, and take care 🙂

    Oh! And as I’m pretty much an unknown developer, don’t hesitate to share this with your gamer, streamer or incredibly generous millionaire friends 🙂 To help you with the process, here’s a mail template to copy-paste as much as you want:

    _________________

    Hello,

    I’ve been following this indie game dev, and I think this could interest you: he just released 🐢 Slide, Animal Race 🐬, a local multiplayer race game with cute animals, for little and big kids. You can check out the Steam page: https://store.steampowered.com/app/1345280/Slide/. There’s a free demo if you want to test it.

    And don’t hesitate to forward the mail if you think that might interest some of your contacts, it would help him a lot. Thanks for him.

    Cheers.
    _________________

  • Fixed Cameras & Translations

    Fixed Cameras & Translations

    Hello everyone,

    The final release of Slide is approaching! For reminders, it’s planned on February, 17th.

    Right now I’m working on (better) translations of the game. It will be available in English, Simplified Chinese, Russian, Japanese, Korean, French, German and Spanish. Here’s a little glimpse at it:

    It’s pretty weird to rediscover your own game in a foreign language… 

    I’ve also worked on fixed camera positioning. They are used to showcase the track and the animals when you’ve finished a race. 

    Anyways,  I’m also working on minor bugs, balancing AIs, … Almost there!

    Thanks for your patience!

  • Release Date for Slide

    Release Date for Slide

    Finally! After (more or less) one year of working on Slide, I’ve set up a release date on Steam! It’s a big step for me as it’s my first “official” indie game, even if I’ve been creating games for more than 20 years… Already ! Wow! So the game will be available on…

    February, 17th 2021

    If you want to get notified, you can:


    The game is almost finished and lacks one thing or two (one music, a bit of balance in the AI, some polish and optimisation, plus some minor bug fixes…)

    The final game will feature 6 tracks, 6 animals and should be playable up to 8 friends! I hope to add tracks and animals on the long run if the game has a minimum success.

    By the way, here’s a quick screen of the last track I’ve added:

    The final track: the Lantern Festival

    I’ve also added a new kind of animal (quite different from the sea ones…):

    A cute fennec fox 🙂

    I hope to add more of its kind in the future… I’ve also worked on a new music for the celtic race, with bagpipes, irish flutes and celtic harps.

    And that’s it! Have nice holidays, take care, and see you very soon for the release!

    Peace!

  • Demo on Steam & New Character

    Demo on Steam & New Character

    Steam Autumn Game Festival

    The Steam Autumn Game Festival is approaching, and I thought it would be a nice occasion to finally release the Slide demo on Steam. And good news: the demo build has officially been validated by Steam! It’s a great premiere for me 🙂 Because, in case you wonder, no, it’s not as simple as a single click upload… I can now officially announce that…

    My first Steam demo is going to be available at the beginning of October!

    It will be the same as on Itch.io, but I guess it could reach more people. And of course, there will be Windows, Linux and MacOS versions too. Oh by the way, the MacOS demo version is already available on Itch.io.

    And apart from that?

    I’m still working on communication around the game, and I build specific tools to help me with it. But even if I have to do it, that’s not really my thing. At some point, I had to make a break and to actually create something for a game, so I added an animal character to Slide:

    Say hello to the Emperor Penguin!

    It was quite fun to do, but I see that I still have to improve my animation skills. I hope to post a making-of video soon.

    And that’s it! Peace and stay safe.

  • Slide Demos on Itch.io

    Slide Demos on Itch.io

    Hello everyone!

    As said in the title, you can now have access to 🐢 Slide 🐬demos for Linux and Windows on Itch.io. And they are absolutely free!

    I – Demo!

    The demo features:

    • A track in the clouds with nearby auroras
    • A cute turtle to ride
    • Up to 4 local players in splitscreen

    II – Updates

    Since last time, a few things have changed:

    • Keyboard controls are more friendly (arrows for player 1, WASD|ZQSD for player 2)
    • Fixed UI sound level not affected by settings
    • Packaged Linux build
    • Auto deployment on itch.io with a simple click (super useful for updates).

    III – Communication

    Regarding the game, it’s not that much. However, I’ve spent a loooooot of time preparing the communication around the game:

    • Creation of Itch.io & Steam page
    • Creation of a trailer
    • Creation of a presskit
    • Creation of all promotional material & artwork
    • Contacting press & streamers
    • Creation of custom tools to handle mailing & contacts

    And wow! That was really more complicated & time consuming than I imagined.

    And that’s all! I hope you’ll like the demos. Don’t hesitate to give me feedback, that will help me to improve the game. And, as always, you can

    That’s probably what would help the most.

    Peace, and take care!

  • Slide on Steam

    Slide on Steam

    Finally!

    After all these years of coding games, I’ve achieved something showable to the world on a Steam page!

    You might already know it but 🐢 Slide 🐬 is a multiplayer race game with cute sliding animals. You can play it with friends or family. So if you think that game is for you, don’t hesitate to:

    Wishlist 🐢 Slide 🐬 on Steam

    It would help me a lot by giving me a visibility boost! Plus you won’t miss the demo (in a few weeks) and the release (Q4 2020).

    And if you think some of your friends could be interested don’t hesitate to share to them! Given that I’m far from being a rockstar, I can only count on word of mouth. Thank you so much for your help!

    It’s a big step for me, and I hope it will be well received by gamers (including you of course 😀 )!

    Peace!

  • Slide Trailer

    Slide Trailer

    Everything’s in the title! After many nights of capturing gameplay and editing stuff, here is the trailer for Slide:

    I hope it gives a good idea of the game 🙂

    If you think some of your friends might be interested by this, don’t hesitate to share it! It’s free for you, and it helps me a lot 🙂 Thanks a lot!

    The demo is coming soon on Itch.io !

  • 🐢 Slide 🐬 on Itch.io!

    🐢 Slide 🐬 on Itch.io!

    Hello everyone,

    As you might now, at the moment, I’m working on Slide, a little “spin off” game of A Thief’s Melody, in order to rise some additional funds. And I’m happy to announce that the Itch.io page of Slide is now live! You can check it out here:

    Visit 🐢 Slide 🐬 page on Itch.io

    If you don’t know about Itch.io, it’s an online game store, a bit like Steam, but much more indie oriented, and indie dev friendly. That’s a good platform to start to push the game and see how the community responds to it.

    Anyways, the Steam page will come soon too, so stay tuned 😉

    And here’s a little key art I made for the occasion:

    youtubeThumbnail1920

  • News & Surprise Demo

    News & Surprise Demo

    Hello everyone,

    It’s been a long time (and I say that on almost every post, but this time, I truly break records!), but I’ve been super busy… And as it seems we’ll all stay at home for a while (at least for a majority of people), I thought I could take the time to give some fresh news.

     

    I – What’s up?

    First of all, I hope that everybody’s fine and safe during this difficult and strange period…

    Then sadly, I’ve been working a little bit less on A Thief’s Melody, mainly because I have part time jobs to pay bills. However, I started to work on a mini turtle race game within the game. To sum up, it’s some kind of Mario Kart with animals that can dive. As a picture’s worth a thousand words, here are a few screens:

     

    20200304_220638
    20200331_151801
    20200331_151142
    20200331_151230

     

    I’ve been working on this mini game for the last 5 months, and, as I designed it, I got carried away, always widening the initial scope of the mini game 🙁 At some point, it reached some decent quality and minimal content and I thought it could totally be released before A Thief’s Melody as a little party game. Plus this could (hopefully) bring me some income to keep on working on a Thief’s Melody on the long run.

    So… This game is called Slide and you can test it.

     

    II – A Free Demo for you

    So the main news of this mail is that you can already play a free version of this mini game here:

     

     

    Of course this is only a demo version, but I hope you’ll like it 🙂

    Don’t hesitate to tell me what you think, and I hope that this mini game will make you have fun especially if you’re stuck at home…

    Take care, peace!

  • Key Art Poster

    Key Art Poster

    Hello everyone,

     

    You might have already noticed it, but I recently worked on a new painting to promote the game. So here is the new picture that will now be on my website background (and other communication supports I guess):

    background

     

    I tried to design something that conveys the same feeling than the game, mixing freedom, dynamism, dream, humour and a peaceful mood. I hope I got this right! I think I spent more than 10 hours on it, including a few design/composition tests:

    essais

     

    By the way, thanks to all my artist friends who gave me great feedback to improve the picture.

  • May 2019 Demo

    May 2019 Demo

    Hello everyone,

    Here is a new demo of A Thief’s Melody, a 3D cartoon adventure/stealth game with a contemplative atmosphere, somewhere between “Zelda” and “Beyond Good and Evil”. Don’t hesitate to test/share/reblog/comment/like if you want to help me.

    20190509_162816

    Beware: This is the alpha (=NOT FINAL) demo of May 2019. If you want to get the latest demo for sure, just check the official website.

    Feedback & bug hunt: As usual, if you want to tell me what you think about the game, or if you find bugs, contact me at contact at oneiricworlds dot com

    Get all the news: if you don’t want to miss anything, subscribe, or follow me on facebook or twitter.

    Install Notes

    • Linux

    Under Linux, you have to change the execution rights on the game file:
    chmod +x aThiefsMelody.*

    • Mac OS

    Haha… I didn’t test on Mac, because I don’t have a Mac. But the beauty of Unity is that I can release on Mac from a Windows/Linux system anyway.
    So, if Mac users out there want to give it a try and tell me what’s wrong (or what’s right, hopefully 😉 ), you’re most welcome!

    What’s new since the last demo?

    You have to know the demo quests are more or less final at the moment. The next official demos (including this one) will only provide bug fixes and graphics/sound/music enhancement.

    Since March 2019, lots of improvements have been done:

    • New Sun Shaft post process
    • Camera moves sidewards when aiming
    • No more annoying character auto crouch near walls
    • No more camera auto crouch, which generates smoother moves
    • Better shading and look for bomb explosions
    • Better smoke effects
    • Graphical polish on the Pirate Warehouse (sand path shader, vegetation…)
    • Graphical polish on Zephyr Island: windmills, houses, vegetation, better readability/composition, chimney smoke, new textures and assets (stones, bush and trees)
    • New font for dialog and UI. Hopefully, it will be easier to read
    • Various control fixes
    • Many minor bug fixes
    • New dev tool to better detect unclimbable walls

     

    What’s broken ?

    You didn’t expect everything to work perfectly, did you? I’m aware of a few bugs/regressions/problems:

    • Controls are displayed in English, whatever language you choose.
    • Spanish is not implemented yet (even if it is choosable in the options)
    • Some assets still need work to be done or polished (Audio, Graphics, UI, Dialogs, …)
    • Some areas are still a bit empty
    • The game seems a bit dark on some devices, especially with high quality graphics that handle shadow casting. It might be some gamma issue, I’ll have to check this out.
    • Under Linux, it seems the keyboard controls sometimes get “stuck” for a few seconds… I know it’s a crazy thing to say, but it might work better with a Xbox controller :p

    Have fun! Peace!

  • March 2019 Demo

    March 2019 Demo

    Hello everyone,

    Here is a new demo of A Thief’s Melody, a 3D cartoon adventure/stealth game with a contemplative atmosphere, somewhere between “Zelda” and “Beyond Good and Evil”. Don’t hesitate to test/share/reblog/comment/like if you want to help me.

    20190221_143016

    Beware: This is the alpha (=NOT FINAL) demo of March 2019. If you want to get the latest demo for sure, just check the official website.

    Feedback & bug hunt: As usual, if you want to tell me what you think about the game, or if you find bugs, contact me at contact at oneiricworlds dot com

    Get all the news: if you don’t want to miss anything, subscribe, or follow me on facebook or twitter.

    Install Notes

    • Linux

    Under Linux, you have to change the execution rights on the game file:
    chmod +x aThiefsMelody.*

    • Mac OS

    Haha… I didn’t test on Mac, because I don’t have a Mac. But the beauty of Unity is that I can release on Mac from a Windows/Linux system anyway.
    So, if Mac users out there want to give it a try and tell me what’s wrong (or what’s right, hopefully 😉 ), you’re most welcome!

    What’s new since the last demo?

    You have to know the demo quests are more or less final at the moment. The next official demos (including this one) will only provide bug fixes and graphics/sound/music enhancement.

    Since December 2018, lots of improvements have been done:

    • Fix big crashes mainly after Bo Dojo
    • Better animation timing and reactivity for enemies
    • Better fight behavior for enemies
    • Minor hero tweaks: texture, death animation, zen animation
    • Now the hero meditates when we do nothing for a while
    • The camera automatically follows the character. Much easier to play with a joypad now!
    • Addition of a game over screen
    • Creation of a procedural shader for foam rendering
    • Foam around all islands
    • Graphical polish in the Bo Dojo (stones, ivy, plants, …)
    • Graphical polish in Water Dojo (water foam, water splashes, fireflies, ligthing, fog, heavy vegetation, breaking blocks, stones, cracks, statues…)
    • Graphical polish for Aqualums Island (grass, flowers, fog…)
    • Gameplay bug fixes in Water Dojo
    • Redesign of some pickable items (maps & paintings)
    • Minor UI fixes (swim force now displayed, avatars of NPC, …)
    • Many minor bug fixes

     

    What’s broken ?

    You didn’t expect everything to work perfectly, did you? I’m aware of a few bugs/regressions/problems:

    • Controls are displayed in English, whatever language you choose.
    • Spanish is not implemented yet (even if it is choosable in the options)
    • Some assets still need work to be done or polished (Audio, Graphics, UI, Dialogs, …)
    • Some areas are still a bit empty
    • The game seems a bit dark on some devices, especially with high quality graphics that handle shadow casting. It might be some gamma issue, I’ll have to check this out.
    • Under Linux, it seems the keyboard controls sometimes get “stuck” for a few seconds… I know it’s a crazy thing to say, but it might work better with a Xbox controller :p

    Have fun! Peace!

  • Semi-procedural foam shader

    Semi-procedural foam shader

    Hello everyone,

    It’s been a long time since I last posted a technical tutorial, so finally, here’s a new one. This one will tackle the problem of creating procedural foam for my game. I’ll try to explain my thinking process and the different choices I’ve made to create this:

    20190114_finalMixing

    The final foam rendering in my game.

    Here, I use Unity as a game engine, Blender for modeling and texturing, and Krita to paint textures.

    I – Problem

    My game takes place in an ocean-covered world, so having foam on the shores seems necessary. My biggest problem here is that my game is still being modified and island shapes may change or new islands may appear. So, I want to find a way to create foam easily and fast enough.

    Moreover, I may change the designs many times for a single island, and I don’t want to have to re-create foam meshes from scratch every time.

     

    A while ago, some friends pointed to me the Rime VFX breakdown video by Simon Trümpler. There are many incredible tricks in this one. The foam in particular is very well crafted, and the effect is stunning (as long as you go for a stylized rendering of course).

    The only problem I saw with this approach is that it is a bit daunting to create seamless uv maps for each foam mesh. Indeed, in Blender, when you want a ring/circular mesh to have a seamless mapping, you need to  perfectly align manually the uvmap so that the image repeats itself without breaking the pattern. It’s OK for a single asset, but for many unique islands and rocks in my game, it’s more than I can handle. In addition, with cyclic seamless uv mapping, if you need to tweek the wave length afterwards, you can’t scale texture coordinates as you want; you are limited to integer multiples. I have to find something else.

    20190113_scalingUV

    Process of scaling uv map to get rid of the seam. Perfectly matching both sides of the seam can be quite long for many assets.

    II – What I want

    Ideally, I aim at:

    • An easy way to create foam in Blender, with as few clicks as possible. Ideally, I would like to only handle modeling, and no uv-mapping at all.
    • Having moving waves without (too) obvious repeating pattern
    • Easy parameter tweaks in order to change wave length, speed, or look.
    • Graphically, as I use deferred shading which is not very transparency-friendly, I want a pure colored foam with some sharp edges. So I’ll use clipping based on texture values. Here’s what I’ll try to achieve:

    20190113_foamGoal2

    III – Base texture with world coordinates

    As usual, my approach is far from perfect and is only a compromise between what matters to me and what is technically reachable (to me too :p).

    My first idea was to use automatic uv coordinates, such as vertex world coordinates, which works pretty well for my procedural terrain mapping (which I might explain too one day, hopefully). However, world coordinates do not embed any kind of information about an hypothetical “privileged” direction.

    This means I can’t have a “classical” foam texture with “lines” along the shore edge like the one below, because it would be OK on some sides of an island, but not on the other sides:

    uvFoam 20190113_foamWorldCoordsUnity

    In this texture there is a strong global direction (horizontal). The corresponding ingame look with world coordinates doesn’t work.

    When I use automatic mapping, I must have some neutral/uniform texture (direction wise) for example something like this:

    uvFoamWorld 20190113_foamWorldCoordsUnityBetter

    A simple foam texture with no main direction. The corresponding ingame look  is a bit better…

    OK, this is better, but it’s still a bit stiff and disappointing, but that’s the price to pay for an automatic method. Anyways, it doesn’t seem to be enough to get visually interesting foam.

    IV – Adding procedural  waves from v coordinate

    Now, if I want some lines along the shore, or the foam moving towards (or away from) the shore, it is absolutely mandatory that I have an additional “direction” information embedded in the mesh. This is also necessary to make the foam “vanish” when it is far away from the shore. This specific direction changes for each rendered triangle, so I need to encapsulate it in a way or another on the mesh vertices.

    Thus, I guess I still need to use a basic uv mapping to specify this “shore direction”. To achieve this, I only need 1 texture coordinate, which I choose to set to v (see picture below). The idea is to have v=0 on the outer edge loop of the foam (the “sea side”), v = 1 on the middle edge loop of the foam (the “ground side”), and v = 2 for the edge loop that will be “inside” the island.

    20190113_foamVMapping2

    The basic texture mapping. Here I don’t really care about the seam problem (you can see it at the bottom of the mesh). I only work on the v coordinate.

    So the movement towards or away from the shore will be built from this simple texture coordinate. The easiest way to create the famous “foam lines” is so use a sinus of v. To make it move, I offset it depending on the current time and the wave speed.

    20190116_sinus 20190113_movingSinus

    sinus(frequency*v + speed*time) ; clipped at 0

    Keep in mind that, in order to get sharp edges, I clip any fragment value below a certain threshold.

    20190114_movingSinusLoweredThresholdChange

    Changing the clipping threshold creates larger or smaller waves

    20190114_sinusGlobalFrequencyChangePrinciple

    Changing the frequency creates more or less waves

    Now if I want the sinus foam to wash away as it enters the sea, I need to raise the sinus according to the v coordinate, like this for example:

    20190116_sinusPlusV 20190113_movingSinusLowered

    sinus(frequency*v + speed*time)+v ; clipped at a good threshold t. Waves get thinner as they vanish in the sea

    Now let’s have fun a little bit by adding noise to this initial shader, in order to make it more “natural”. As a noise-based texture, I use a simple RGB seamless noise texture that I made with GIMP using the “solid noise” generator:

    tileable2DWave

    Seamless noise made with GIMP.

    From this, I can randomize the speed, the frequency or any other parameter of the sinus. Randomizing the frequency is quite interesting; it is a way to locally add more or less wave lines like this:

    20190113_movingSinusLoweredFrequencyChange

    Adding (world) noise to frequency: sinus((frequency+noise(xz))*v + speed*time)+v; where xz are the world horizontal coordinates. See how some zones get more foam lines, while other zones get fewer.

    The generated sinus part seems to work quite OK, but I think it still misses some “connections” betweens the foam lines, and, to add them, I need to rely on world coordinates. I could use world noise to add these connections, but I wanted to try a more controled approach by using my handmade texture on top of it.

    20190114_movingSinusLoweredPlusBaseTex

    Mixing the sinus procedural waves and the hand painted texture.

    But if I use a pure binary texture for foam connection on top of the generated sinus waves, I have no control at all on the “vanishing” of this texture. That’s why I chose to use a distance transform texture.

    V – Distance transform textures

    Distance transform images are created from a pure black or white base pattern. Each pixel of the distance transform image represents the distance to the nearest white pixel in the base pattern, like this:

    20190114_distanceTransformExplained

    Well, actually, I used an inverted distance transform here, because it’s more convenient for the clipping phase, but you get the idea 😉 And yes, I used a different pattern than the previous one.

    Distance transform images are just a way of seeing the data. You might also interpret it as a height map (even if the meaning is slightly different, it might help to grasp the concept). The basic idea is to have an image that embeds some kind of “evolution/animation” of the base pattern.

    Distance transform images may be generated through filters, but generally, these filters don’t handle very well (or even not at all) seamless images. Another way is to paint some pseudo distance transform image directly. Of course, it won’t be mathematically accurate, but as a benefit, we can create more custom animation patterns. An acceptable way I found, is to use the unusual following settings in Krita, (the painting software I use):

    • Use a “Build-up” painting mode (vs Wash by default), so that you can intersect the current stroke properly
    • Use the “Greater” brush fusion mode, so that only higher values will be drawn on top of what is already drawn (which is the correct way that real distance transform images are merged together)
    • Use a soft brush with a linear falloff from 100% to 0%, so that the maximum value range is used, which will result in smoother animations. Actually, the falloff will act as an “ease in/ease out” parameter for the animation.
    • No pressure sensitivity (well, I guess this is personal choice)
    • Activate the “Wrap Around” mode to create seamless textures (as I paint a lot of textures, this is my favorite option in Krita).

    which results in this:

    20190114_drawingDistanceTransform

    Directly painting a seamless distance transform texture. Notice the “X” pattern appearing on the intersection, this is typical of a distance transform image.

     

    Of course, this is a very “mathematical” way of approaching this idea. You can always draw with the default soft brush and get something totally OK (even more natural I think), but you have to always keep in mind that you are “painting an animation” (never thought I would say that one day).

    VI – Tweaking and mixing

    Now, I have more control on the rendering of my hand painted foam texture:

    20190114_movingFoamThreshold2

    tex(xz); clipped at a certain threshold t; Now I can control the width of the pattern by changing the clipping threshold for my hand painted foam texture.

    Of course, I used a few tricks to make it more interesting:

    • Adding the v coordinate (to make foam larger near the shore and thinner on the seaside), just like for the sinus waves
    • A speed parameter texSpeed to make the texture move slowly
    • A bit of world coordinate moving noise to create some “warping” effect

    20190114_finalHandMadeFoam

    tex(xz + noise(xz+noiseSpeed*time)+texSpeed*time)+v; clipped at t

    And, now, I can finally mix both the procedural sinus waves, and my hand drawn foam. After a few tweaks on threshold, speeds, noises, and other parameters, I ended up with this:

    20190114_finalMixing

    The final result mixing procedural and hand drawn foam:
    ratioSinus * [sinus((frequency+noise(xz))*v + speed*time)+v] +
    ratioTex * [tex(xz + noise(xz+noiseSpeed*time)+texSpeed*time)+v];
    clipped
    at t.

    In the end, I also added a few parameters to control the noise amplitudes and scales/frequencies, so each noise(xz…) is in reality noiseAmplitude*noise(noiseScale*xz…). This gives more control on all the deformations happening. I also replaced the simple “+v” with the more versatile affine fonction “+a*v+b“.

    VII – Building in Blender

    So in the end, I still have to make a uv mapping (or more exactly a v mapping). But the good news about this is that I only have to make it ONCE for ALL the game. Indeed, for any new island (or any immersed object), I can copy a base foam mesh already v mapped, and I can focus on modifying only the mesh:

    • If I move vertices, the mapping will still be OK.
    • If I delete an edge line, the neighbour v mapping won’t be affected
    • If I add vertices with a loop cut, the uv mapping for the new vertices will be automatically interpolated from their neighbours, resulting in a good v coordinate.

    This would not have been the case if I had used the u coordinate to make more classical texture mapping, because any  move of vertices along the shore edge would have stretched the texture (and I would have had the seam problem for each new island).

    VIII – Going further

    We could go even further by working on the following points:

    • Layering two or more hand painted foam textures, with different speeds and scales to create a unique pattern everywhere.
    • Randomizing the sinus speed to have local flow variations
    • Adding noise to the threshold or to the affine function part (“+v“/”+a*v+b“) so that some zones would have foam on a very short or very long distance
    • Randomizing the world coordinates to create even more warping effect
    • Put the time offset through a sinus to make waves come and go. Right now they only go away from the shore.

    By the way, I didn’t speak at all about optimization here, and there is surely some work to do about it (especially on noise textures that could fit on fewer channels than a full RGB image).

    Anyways, this was a nice journey to me, and even if the result is not super awesome, I really enjoyed the process of mixing a bit of maths with more arty considerations. I hope this will help somebody out there!

    Thanks for reading!

    Peace!

     

  • Happy New Year!

    Happy New Year!

    Hello everyone!

    And happy new year, a few days late :p I wish you health, happiness and fun!
    Here’s a little painting I made for the occasion:

    20190120_happyNewYear

    I know it’s been a while since the last post on the game development, but a new one is coming on procedural texture generation, so stay tuned!

    See you soon!

  • December 2018 Demo

    December 2018 Demo

    Hello everyone,

    After the Toulouse Game Show (more on that later), I had quite some feedback and bug reports so I corrected many things on the demo. So, after many fixes…

    Here is a new demo of A Thief’s Melody, a 3D cartoon adventure/stealth game with a contemplative atmosphere, somewhere between “Zelda” and “Beyond Good and Evil”. Don’t hesitate to test/share/reblog/comment/like if you want to help me.

    20181029_205653

    Beware: This is the alpha (=NOT FINAL) demo of December 2018. If you want to get the latest demo for sure, just check the official website.

    Feedback & bug hunt: As usual, if you want to tell me what you think about the game, or if you find bugs, contact me at contact at oneiricworlds dot com

    Get all the news: if you don’t want to miss anything, subscribe, or follow me on facebook or twitter.

    Install Notes

    • Linux

    Under Linux, you have to change the execution rights on the game file:
    chmod +x aThiefsMelody.*

    • Mac OS

    Haha… I didn’t test on Mac, because I don’t have a Mac. But the beauty of Unity is that I can release on Mac from a Windows/Linux system anyway.
    So, if Mac users out there want to give it a try and tell me what’s wrong (or what’s right, hopefully 😉 ), you’re most welcome!

    What’s new since the last demo?

    You have to know the demo quests are more or less final at the moment. The next official demos (including this one) will only provide bug fixes and graphics/sound/music enhancement.

    Since May 2018, lots of improvements have been done:

    • Redesign of some objects (Link, Bo, …)
    • Redesign of secondary characters (Lia, Tal, Clarisse, Archibald, Reno and more to come…)
    • Redesign of the main character: now he has a little belt floating in the wind, he can look at interesting things when you pass near them, all animations have been recreated and there are a few new ones, among which a roll move after each jump, which really smoothes the gameplay. Some more will come, this work is not finished yet.
    • Redesign of HUD targeting icons
    • you can know center the map on the character
    • Already spoken dialogs now appear on a different color (not sure if I’ll keep it or not…)
    • All characters now have hand drawn avatars appearing during dialogs
    • The Thief Guild and Pirate Warehouse levels have their own musical themes
    • The main title is now animated
    • The pirate warehouse has been massively re-designed
    • I’ve removed the shield, its gameplay was very unbalanced and unintuitive. This makes fights more risky than before.
    • A little tutorial has been added for handling Asclepios fruits
    • Many little fixes here and there, dialog and descriptions fixed and improved, more details, … But I still have a lot of work on these!

     

    What’s broken ?

    You didn’t expect everything to work perfectly, did you? I’m aware of a few bugs/regressions/problems:

    • Controls are displayed in English, whatever language you choose.
    • Spanish is not implemented yet (even if it is choosable in the options)
    • Some assets still need work to be done or polished (Audio, Graphics, UI, Dialogs, …)
    • Some areas are still a bit empty
    • The game seems a bit dark on some devices, especially with high quality graphics that handle shadow casting. It might be some gamma issue, I’ll have to check this out.
    • Under Linux, it seems the keyboard controls sometimes get “stuck” for a few seconds… I know it’s a crazy thing to say, but it might work better with a Xbox controller :p

    Have fun! Peace!

  • May 2018 Demo

    May 2018 Demo

    Hello everyone,

     

    It’s been a while since the last demo, and I’ve worked on many visual improvements, so I decided it was enough to publish a new version of the game. As usual, don’t be surprise as the main quest is more or less the same (see details below to learn what’s new).

    So here is a new demo of A Thief’s Melody, a 3D cartoon adventure/stealth game with a contemplative atmosphere, somewhere between “Zelda” and “Beyond Good and Evil”. Don’t hesitate to test/share/reblog/comment/like if you want to help me.

    20180514_203810

     

    Beware: This is the alpha (=NOT FINAL) demo of May 2018. If you want to get the latest demo for sure, just check the official website.

    Feedback & bug hunt: As usual, if you want to tell me what you think about the game, or if you find bugs, contact me at contact at oneiricworlds dot com

    Get all the news: if you don’t want to miss anything, subscribe, or follow me on facebook or twitter.

    Install Notes

    • Linux

    Under Linux, you have to change the execution rights on the game file:
    chmod +x aThiefsMelody.*

    • Mac OS

    Haha… I didn’t test on Mac, because I don’t have a Mac. But the beauty of Unity is that I can release on Mac from a Windows/Linux system anyway.
    So, if Mac users out there want to give it a try and tell me what’s wrong (or what’s right, hopefully 😉 ), you’re most welcome!

    What’s new since the last demo?

    You have to know the demo quests are more or less final at the moment. The next official demos (including this one) will only provide bug fixes and graphics/sound/music enhancement.

    Since July 2017, lots of improvements have been done:

    • Work on atmospheric effects (clouds, fog, flying particles, …) on many levels
    • Whole new vegetation system, all details here for the curious reader
    • Density of the vegetation system can be controlled for small configs
    • A new cloud system for the world skybox
    • A whole redesign of the pirate warehouse level
    • Design upgrade of Eagle islands
    • New gameplay for the shield
    • Water reflections can now be turned off for small configs
    • Camera sensitivity is now in the options
    • Better toon shading on characters
    • Heavy optimization of the Link and especially the map
    • Various post process for a better “anime” feel: oil paint & line edge, which also improves readability (at least to me 😉 )
    • Various technical tests for better character modeling and animation
    • Simpler UI to leave the screen almost empty for a better immersion
    • You can now sell flowers 🙂
    • UI improvement: icon positioning, optimisations, a few redesigns, better 3D & 2D mixing, better map rendering
    • Lots of fixes & code cleaning
    • Last but not least: my whole production pipeline now runs  entirely under Linux. YES! I use Unity Editor on Linux, and it has been a bit difficult, but I really like the new workflow. More on that later I hope!

     

    What’s broken ?

    You didn’t expect everything to work perfectly, did you? I’m aware of a few bugs/regressions/problems:

    • Controls are displayed in English, whatever language you choose.
    • Spanish is not implemented yet (even if it is choosable in the options)
    • Some assets still need work to be done or polished (Audio, Graphics, UI, Dialogs, …)
    • Some areas are still a bit empty
    • The game seems a bit dark on some devices, especially with high quality graphics that handle shadow casting. It might be some gamma issue, I’ll have to check this out.
    • Under Linux, it seems the keyboard controls sometimes get “stuck” for a few seconds… I know it’s a crazy thing to say, but it might work better with a Xbox controller :p

    Have fun! Peace!

  • Creating a seamless hand painted stone texture

    Creating a seamless hand painted stone texture

    Hello there,

    Finally, I take the time to share another little tutorial. Here is my process to create a seamless hand painted texture for my game.
    I hope you’ll find it interesting!

     

     

    Peace!

  • Happy New Year

    Happy New Year

    2018_bonneAnneeEn

    Hello there, and happy new year!

    OK, I’m a bit late, but we’re still in January…

    It’s been a while since the last post, but I’m still working on the game 🙂 Lately my Windows crashed and I’ve moved my whole production pipeline to Linux (including Unity). It was a bit complicated, and I’m still not 100% OK with it, but all the major bugs have been fixed.

    At the moment I’m still working on visual upgrades (sky, clouds, vegetation, props, ocean…)
    Here are a few screenshots:

    20180131_112003
    20180131_114847 20180131_114913 20180131_114931 20180131_114950

    Peace 🙂

  • Visual Improvements

    Visual Improvements

    Hi there,

    It’s been a long time since my last post. I’m very sorry for that. I currently work as a freelancer to pay my bills so I have less time to work on the game. But don’t worry, I still work on it!

    So lastly, I added many things to the game:
    – I set up a new dynamic cloud system , to add more character and “hugeness” (if that’s a word) to the sky. Now, clouds move, slowly appear and disappear, and some areas have a specific weather.
    – I fixed the for in water reflections
    – The new grass system has smoother color transition with the ground
    – I added a (hopefully) subtle oil paint effect on the distance

    Here are a few screenshots, that you may already have seen if you follow me on twitter.

    20171111_13162220171111_13182220171111_13255320171117_175637
    Peace!

  • Grass & Vegetation

    Grass & Vegetation

    Hello everybody,

    Recently I tried to visually upgrade the demo in order to achieve a better look for the game. I put some effort on rendering grass and vegetation, so this post will explain my approach.

    20170810_121404

    A glimpse at the new grass system!

     

    I – The unity grass system

    First of all, I considered using the Unity terrain and grass engine. But this raises 2 problems:

    First, I use very complex terrains in my game, with “flying” islands, holes, caves, bridges and other non convex shapes. Unity uses only “height map” terrains, which can’t easily generate grass on everyside of a flying island for example.

    Second, the Unity grass system is designed to display grass on huge terrains. Thus a lot of grass batching is dynamic, resulting in quite some draw calls, which severely slows down my game.

    That’s why I chose to design my own vegetation system.

     

    II – The new vegetation system

    The idea behind this new vegetation system is to be able to easily create grass fields in a few clicks, and with enough control over the artistic part. I use Blender as a my level design tool (among others), so I must be able to export the grass settings to Unity via the FBX format. I want something not too heavy filewise and quite adaptative to suit all the use cases I will face (vertical vegetation on walls, or moss below flying islands). Here’s what I ended up with:

    In Blender

    Because of the above reasons, I choose to use vertex colors on hand made meshes. This allows me to create custom meshes only where I want to put vegetation. Moreover, I can use the 3 color channels to create 3 different types of vegetation on a single mesh. To paint easily on each channel, I use the “Add” and “Sub” brushes with pure red, green or blue colors.

    Of course, I use a special name for the mesh with specific conventions to tell Unity which kind of vegetation I want.

    I can overlay many meshes on top of each other, so there is virtually no limit to the number of vegetation types I can handle.

    20170816_vertexColorGrass

    Here’s the vertex-painted grass mesh in Blender. For this mesh I use grass in red, moss in green and some kind of falling lianas in blue.

    Of course, it might be difficult to “paint” grass without actually seeing it in Blender (grass will be generated later in Unity). This is the price to pay to have light-weight file exports. But eventually, I got used to it.

    20170816_vertexColorRocks

    If I don’t want grass everywhere, I can only set up a small mesh on the specific area I want to cover. This is very cheap with regard to the export file size.

     

    In Unity

    Then when I import the level in Unity, my level importer scripts generate vegetation with density depending on the vertex color of the custom mesh. Each grass element is generated from a prefab. The prefab is automatically snapped and rotated accordingly on the first underlying viable surface. Of course, defining a “viable” surface is not as simple as that (I have to test the kind/type of surface), but you get the idea.

    20170810_154114

    Sometimes, auto snapping of grass creates weird results (grass on the sign, which is pretty cool, but not intended). So I had to add additionnal specific rules regarding the snapping process to avoid this kind of things, or, at least, explicitly tolerate them.

    I also added a randomizing step, which enabled me to change rotation, or scale or whatever suits me on each prefab, thus creating variation.

    20170810_174518

    A screenshot showing the 3 types of vegetation: grass on the foreground, moss on the vertical walls, and falling lianas below the floating islands.

    20170811_102213

    Another screenshot of the Thief Guild island with grass.

    Then, once all prefabs on all meshes are generated, I merge them by material. I pack everything in meshes with ~65000 vertices which is the limit Unity can handle. Of course, this creates several batched meshes (usually around 50, I guess I could go higher) but this drastically lowers the number of drawcalls.

    III – Pros & Cons

    As usual, this approach has good and bad sides:

    Statically batching all grass meshes comes at the expense of not being able to dynamically show/hide the grass depending on the distance because everything is batched with no particular order or region computation. Thus every grass blade on an island is visible from any point on this island. As the islands in my game are quite small, this seems OK, at least for now. In the future, shall I need to optimize more, I think I could add some octree structure to pack grass by region, and/or use some kind of intelligent shader that would clip very far away geometry.

    But, batching grass with a total random order has an advantage: I can choose to activate only half of the batched vegetation meshes, and this will divide the density by 2 everywhere. As displaying grass is still a GPU intensive task, it is quite useful to be able to dynamically lower the density to make the game run on smaller material configurations.

    Another good thing is that, as grass is generated automatically via prefabs, this vegetation system can actually handle all prefabs in general, not necessarily vegetation; rocks for example. Thus, I should call this a “detail” system.

    20170816_222620

    A few rocks generated with this new detail generation system.

    Another advantage is that I can also manually place the grass prefab if I want. It will still benefit from the batching system. So I can use this “automatic generation system” for wide areas, and I can manually place detail on smaller or very specific areas if I want to.

     

    20170816_232045

    I can still manually place grass tufts if I want to (on rocks here).

    20170816_231738

    A simple cave with lots of lianas…

    IV – Performances

    At the moment, I can display 80 000 vegetation elements at a decent frame rate (~ 30 fps) on a medium configuration. Of course, it depends a lot on the number of polygons of each grass prefab. So each detail prefab must be very carefully modeled.

    And because I already coded specific vegetation shaders, I still use them with this new generative system. So grass still reacts to the wind and to player moves.

    20170810_180233

    So that’s all for today! I hope it wasn’t too technical. This system is still quite new, so I hope to tweak it in the next months to make it more efficient, or more adapted to my problems.

    See you!

    Peace!