Uncovering the secrets of

indie game dev

Get all the news !

Never miss out any update.

Author: Oneiric Worlds

  • July 2017 Demo

    July 2017 Demo

    Hello everyone,

    I’m back from the Japan Expo, where I met many very cool people! Thanks a lot to anybody who took the time to stop at my booth, and welcome to new subscribers 🙂 Thanks also to my booth mates from oQo and all the indie dev colleagues for the nice ambiance, and thanks to all the organisers from Toulouse Game Dev, and the Japan Expo of course 🙂

    I couldn’t take pictures, but here is one of the booth taken by my friends before the opening:

    IMG_2231

     

    So now is the occasion to upload the last demo I showed there. It’s mainly the same as before, except more optimized.
    So here is the last version of the 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!

    20170530_211629

    Beware: This is the alpha (=NOT FINAL) demo of July 2017. 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, twitter, or google+

    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 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 2017, lots of optimisations has been done

    • Lots of draw call optimisations, by merging renderers and colliders at editor time, depending on tags and layers.
    • Removal of water real-time reflection in fastest mode
    • Full deferred pipeline using a toon BRDF for characters (instead of old deferred + lighting prepass pipeline) which results in a 20-30% fps improvement
    • Toon shading now reacts to multiple light sources
    • New grass et vegetation shader to better take into account lighting on both sides of each mesh + overlay texture to add color variations
    • Change of the control names in the tutorial to better fit the Xbox 360 conventions.
    • Better camera moves on cutscenes + new cutscene for locating the Bo dojo.
    • Lots of code cleanings

    As a benchmark, I tested on my 8-year-old laptop. Before optimization, the game ran at 5 fps. Now it runs at 17 fps. There is still room for improvement, but that’s a good start. Of course on a nowadays PC, the game should run pretty smooth.

    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.
    • Some assets still need work to be done or polished (Audio, Graphics, UI, …)

    Have fun! Peace!

  • Japan Expo 2017

    Japan Expo 2017

    Hello there,

    Today, it’s just a quick news: I’ll be at the Japan Expo in Paris this week, from July 6th to July 9th.
    You can get all the info there:
    http://www.japan-expo-paris.com/fr/

    japanExpo

     

    Don’t hesitate to stop at my booth and have a talk!

    Meanwhile, I work hard on trying to optimize the game to make it playable on most of the configurations. But more on that later 🙂

     

    See you 🙂

    Peace!

  • May 2017 Demo

    May 2017 Demo

    Finally!
    After 1 year and 6 months since the last demo, here is an upgraded version of the 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!

    20170530_211629

    Beware: This is the alpha (=NOT FINAL) demo of May 2017. 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, twitter, or google+

    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 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 November 2015, a lot of things happened on the game (but not that much on the demo). I won’t list everything here, but the main updates are:

    • Polishing & refinement of the combat system
    • Polishing of the magnetic gauntlet mechanics, especially visual feedback.
    • 11 New levels
    • 2 New Bosses
    • Polluted Water Zones
    • New UI including: a control remapping screen, a better quest archiving system, better tool tips, and visual enhancing
    • Re-design/correction of the first tutorial
    • Design overhaul of Zephyr Island (not finished yet) including a shop, the zoological center and the Quack Shack
    • Minor tweeks on the Bo Dojo
    • Background continuous saves. You don’t need to worry about saves anymore.

    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, and the button names are too generic to be easily understandable.
    • The game is slower than before. I must clearly redo another optimization pass.
    • Some assets still need work to be done or polished (Audio, Graphics, UI, …)
    • Some camera moves are a bit harsh/weird

    Have fun! Peace!

  • After the Toulouse Game Show

    After the Toulouse Game Show

    … It’s already been a week since the Toulouse Game Show!

    And I finally find the time to thank you all for coming at my booth! It was really nice, and all the feedback were super constructive. Thanks a lot for that!

    By the way, thanks a lot to all the Toulouse Game Dev team who organized all this!

    DSC_2790

    A little photo of my booth.

    The new version of the demo is still under heavy work, but last days have been quite busy! Indeed, I’m a new dad for the second time, 1 month sooner than what was planned, and my schedule is a bit overbooked.

    I hope to find a few hours soon to correct all the biggest bugs of the demo and finally put it online.

    See you soon, and thanks a lot for your support!

     

  • The new Save System

    The new Save System

    Once again, it’s been a long time since the last post. But I’ve been working on many things lately, including (but not limited to):

    • the integration of the new UI of unity for the HUD (= Head Up Display = the information that is displayed in Play Mode), the Link Menu and the World Map. Graphically, this is not very different from what was already there but it should allow much more visual animations and fancy stuff in the future.
    • the possibility to control the UI with the joypad and the keyboard/mouse combo (including the mouse wheel). Not perfect yet, but quite OK.
    • some polish, on Zephyr Island mainly
    • and a new saving system… which is what I’m going to discuss today !

    Beware, this post is quite long and a bit technical!

    I – A new saving system? Why? What’s the point?

    The goal of setting up a new save system is to get rid of the old-school “save points” where the player must save at specific places and times. This breaks the flow of the game, and furthermore, the player might forget to save and then might lose its progression within the game, which could be very annoying.
    Until now, it was this kind of system that was set up, mainly because it was easier to design and I didn’t really have the time to propose something else.

    But, nowadays, in recent videogames, saves are really almost automatic, and the player might not even notice that the game is saving (very often a little icon appears in a corner of the screen to tell you that the game is being saved). This is what I want for my game, but it rises many questions about design, software architecture and real-time performances.

    20170419_214508

    The little gear icon on the lower left corner indicates that the game is being saved.

    II – How should it work?

    Usually, before coding stuff, I try to think about how it should work in different cases (this is more or less a “use-case” approach). Here are a few important points:

    • the player starts a new game. What should happen? Ideally, I would like to ask him for a pseudo/nickname/id, and then save the game using this information. For now, I don’t ask him anything, I just create a new slot (based on day and time) and use it to save the game (because I don’t have time to make something better than this, but it should be corrected in the future)
    • the player is in the game. The game should be regularly saved on the current slot. The thing is, there is not necessarily a current slot. “WHAT?” might you ask. Indeed, a new slot is created for each “new game” launched. But when *I* test the game, I don’t test it from the start EVERY TIME. Generally, I run a level with some modified variables about “where and when” I am in the world and in the story and I test it. This means I don’t have a specific slot associated with my test. Then where should I save? Should I save? Can I save? What if I want to test the save system?
    • the player wants to load a game. I should list all the previously saved games with various info about each slot: what level was it? how many items did the player have? How many quests were finished? Maybe a screenshot to remind the player of the place? Surely the pseudo/id of the player etc…

    Of course, every time I’m saving the game, I don’t want the player to notice any lag in the game. But, sadly, when working with files on a hard drive, things happen quite slowly (in comparison, say, to how many frames a graphic card can handle per seconds). Therefore, I must use threads so that the saved game can be written on the disk “in the background” while the game still runs smoothly (hopefully).

    III – How to make it work?

    1 – the basic class

    Until now, I had a simple class/structure mainly based on .NET dictionaries to save every important aspects of the game:

    • the player info: life, items, ammo, location, state, …
    • the collectibles and quest info: what has been done or asked, what has been collected, how many times, where…
    • the gameplay mechanics info: which door is open, which switch has been connected to what, location of moving platforms, …
    • the enemies info: location, state, …
    • npc and dialog info: what has been said to who, basically
    • world info: current level, day time, played time, …

    The idea was to NOT save the whole state of the game, but rather what is TRULY necessary to reload the game, which should result in light-weight saves, and fastest loading times.

    Of course, all this info must be accessible from anywhere at anytime, that’s why I use some kind of Singleton class to store them (well it’s not that simple, but that’s the basic idea).

    2 – The higher level structure

    So, now that that we know WHAT I should save, let’s see HOW I can save it. To answer all the problems and objectives listed in II, I chose to have:

    • LEVEL 0 saves, that is to say, saved files on the HARD drive
    • LEVEL 1 saves, that are the cloned versions of the HARD drive, but in RAM (ie variables in the code)
    • a unique LEVEL 2 save, which is the save currently modified by all the objects in the game, in RAM of course.

    The idea is to have many layers of saved games, each one communicating ONLY with the layers immediately above or below, depending on their main purpose and on their speed.

    The real-time game engine always works with the LEVEL 2 save. This one is unique. From time to time, and when conditions are OK (the player is not fighting, he’s in a safe zone, he’s not in a “save forbidden zone”, …), I make a full copy into one of the current LEVEL 1 slots. And then, if the game is not already writing on the disk, and conditions are OK (last save has been done more than X minutes ago), I copy the LEVEL 1 save data on a file on the disk (LEVEL 0). The data is saved on the disk via basic .NET binary serializers.

    Of course, to copy data into LEVEL 1 and LEVEL 0 slots, I must know which slot to copy to; By default, there are no current slots. In this case, no copy is done. If the player has started a new game, a new slot is created and it will be considered as the current one. If the player has loaded a game, this slot is now the current one. And if I’m in test mode, I can create a new slot at anytime with a magic hidden key, and from then, this slot will be the current one. This seems to answer all the cases I previously thought of in II.

    A few additional info:

    • The LEVEL 2 save is the one that is constantly read and written from all the objects during the game; so that any object can know if a dialog has been said, if a quest has been completed, or if an item has been unlocked. It’s fast to read and to write on it: it’s a (not that) simple variable in the RAM. It’s the up-to-date information.
    • LEVEL 1 saves are some kind of stencil saves between the hard drive ones (LEVEL 0) and the living one (LEVEL 2). They are a copy of the LEVEL 2 save that I make from time to time. It’s mainly useful because saving on the hard drive is SLOW. This means that I might be saving on the hard drive WHILE the game (that is still running) is modifying the saved data which creates a concurrent access. This is absolutely forbidden if I want to keep the data integrity! If I don’t have this “middle ground” save data, I might totally break the game state in the game and also on the drive… thus… LEVEL 1 saves.
    • LEVEL 0 saves are files on the disk. They are written from or read into the LEVEL 1 save buffer, and it might last many frames.

    Of course, with this system, it’s also possible to save at specific points (when the player quits, finishes a quest, opens a menu, etc..). It’s quite permissive actually.

    3 – What about loading?

    For now, I’ve only talked about the saving process here, because it’s the most complicated one. The loading process is quite straight-forward; it consists in reading all the LEVEL 0 slots on the hard drive and populating the LEVEL 1 slots with the data during the game launch. When the player loads a slot, I copy the LEVEL 1 data to the LEVEL 2 data and load the corresponding level in Unity.

    You might wonder if this is not too heavy in memory, but each save slot should be only a few 10 000 entries of string data. With a quick computation, this results in a few 100 KB in memory for each save. My biggest tests with hard drive data size led me to maximum 2 MB, which is quite OK I think.

    20170419_211708

    The new loading screen. Basic, but functional.

    4 – Performances

    You might have already spotted it, the writing on the hard drive is slow. So copying LEVEL 1 saves to LEVEL 0 is slow. But that’s OK, because I designed it as a threaded process and it doesn’t freeze the game. During this process, I display the little “gears” icon in the lower left corner on the screen to tell the player that the game is being saved. At the beginning of the game you will barely notice it, because it’s really fast (and there’s almost nothing to save). However, Unity is not thread safe, which means I can’t access any Transform or MonoBehavior info. So I had to carefully design saved data to avoid using unity types and functions.

    But another problem is copying data from LEVEL 2 to LEVEL 1: this MUST be a DEEP copy of the data, because otherwise, we could still have the same problem of concurrent access (due to the class type of many C# variables; this is pretty not intuitive to grasp so don’t hesitate to google it if you want to learn more about it). Sadly, deep copies are slow, and these ones can’t be threaded (well at least not very easily) because I copy from the LEVEL 2 data which is “alive”! It starts to get noticeable around 20 000 entries for my dictionaries, which might be OK for the whole game, but I’m not sure yet. I have to do additional tests.

    However, if the future tests reveal that this LEVEL 2 to LEVEL 1 copy is too slow, I might have another workaround in mind, which I won’t detail here because this article is already too long.

    IV – So what now?

    So now, I hope you have a good overview of the saving system in my game. I know it’s not perfect, and I know it will break the game during the near future because it hasn’t been tested enough, but it’s really nice to be able NOT to think about it when you play. The experience is much more immersive.

    A few potential problems are still there:

    • the saves are not clearly identified, so it is difficult to find yours if there are many ones, but I hope I’ll fix this soon (even if this means coding a full virtual keyboard for people playing with a joypad…)
    • I don’t have screenshots of the saved games (whereas I had them in the previous versions) because I changed the save system… Previously, I took a screenshot one frame before opening the save menu which caused a micro lag that was NOT visible because the menu appeared right after it. But now I constantly save the game and a micro freeze is awfully noticeable when you are freely running in the game. This is quite annoying, and the solution is not that easy; I might have to redesign the whole rendering pipeline to render the final image into readable texture so that I can access it at anytime, but even there, there might be some lagging, due to the copying of the image data. Plus the encoding itself might be slow.
    • I would like to add some LEVEL -1 saves, which would be some hard drive backup of the previous save. Why? Because this save system is quite new, and I’m pretty sure some player will meet cases where the system breaks the saves and they will lose their last game. A workaround is to make backup copies regularly, so that they won’t lose the whole game.

    So finally, I have quite an operational new saving system for the upcoming Toulouse Game Show this week end, which was my main objective. By the way, don’t hesitate to come and meet me there if you want!

    I hope this article was not too heavy or technical or boring, but … I doubt it 🙂 Hopefully it might help somebody out there.

    See you 🙂

  • Toulouse Game Show – Springbreak 2017

    Toulouse Game Show – Springbreak 2017

    Hello all,

    Here’s a quick post to tell you that I’ll be at the Toulouse Game Show Springbreak 2017 (in Toulouse, France) on April 22nd and 23rd, with an enhanced demo to show. To this end, I’m now working on upgrading the official demo, with a new tutorial, less empty levels, better graphics, and less bugs.

    Here’s a few screenshots of the work in progress:
    20170307_175551
    20170225_112337
    20170123_163135

    That’s all for the latest news! Don’t hesitate to come and talk to me at the TGS!

  • Fallen Gods

    Fallen Gods

    The painting of the week! Yeah, I know it’s been a while since I last posted the painting of the week 😉 I guess it’s not exactly the painting of the week anymore…

    20161023_fallenGods

    20161023_fallenGodsMakingOf

    As usual, the super HD making of is available on my deviant art: http://matou31.deviantart.com/art/Fallen-Gods-Making-of-664251326

    Peace!

  • Polishing phase

    Polishing phase

    Hello there,

    Today I won’t be long! I just write a quick post to keep you informed about the beginning of the polishing stage of the game. For those of you who don’t know, the “polish” stage consists in taking every aspect of the game (graphics, audio, music, gameplay, dialogs, controls, …), which until now were more or less in “temporary” state, and making them better to achieve a professional quality. It’s awfully long.

    So, since the beginning of the month, I work on the official demo again. The goal is to make it reach the “final quality” within the next months.

    Here’s what’s new (mainly):

    • The game now uses the new Unity UI for the main menu and the ingame interface (HUD), which allows me to use simple but nice and smooth animations. I still have to work on this, especially on all the “Link/Inventory” menus.
    • By the way the HUD is now much more discrete when in Play mode, for a more immersive sensation
    • I changed the home screen, which now shows Zephyr, the hero island

    20170120_103857

    • There’s a control configuration menu for keyboard/mouse/joysticks commands, and you can now navigate the menus with each of these controllers. The switch between them is automatically detected and should display the correct control mapping during the tutorials.

    20170120_103913

    • I started to work on redesigning characters, and I started with Tal, the hero friend and one of the main secondary characters.

    201701_talRedesignOld design on the left, new design on the right (Well, I hope this is obvious…)

    So that’s a nice start, but there are LOOOOTS of work ahead of me. I still have all the demo levels to check and improve, but more on that later 🙂

    Peace!

     

     

     

  • 99 % playable –  First milestone!

    99 % playable – First milestone!

    Finally!

    After more than 3 years of work, I’ve reached a point where the whole main quest of the game is playable. I’ve fully tested it before the Christmas holidays and it took me about 4 hours to speed run the game. Generally speaking, people playing my game take between 1.5 & 3 times longer than I do to complete a single level (when they play for the first time of course). Then I hope that the game in its actual state will provide at least 6 hours of gameplay and maybe up to 10 hours for people who like to wander around and explore.

    20161230_211010

    A screenshot from one of the last levels.

    This is truly a great achievement to me. It conforts me in the path I’ve chosen for this game. Of course the game is far from finished. Even in this state it’s difficult to play for anybody other than me because it lacks all the cinematics, story,  explanations and lots of the gameplay mechanics are still very rough (Hence the 99% of the title). But still, this is quite a huge milestone for me.

    From now on I can finally spend some time on polishing and correcting stuff that has been asking for it for years. I will certainly make many test campaigns in the following months,  and of course you’ll be informed! You might even be asked for a little help as a tester 🙂

    For people who like numbers here are a few:

    • Chapter 1: 20 minutes of play
    • Chapters 2 3 4 & 5: 55 minutes of play (I swear this is true! All these chapters last the same time +- 1 minute…)
    • To do list: 1261 lines. But of course lot of stuff is not listed 🙂
    • Done list: 5470 lines.

    So, to celebrate, here are a few screenshots from the whole game in no particular order. As you might see, it’s still a bit empty, but the base is here.

    20160928_09232020151206_200024 20160418_100358 20151102_101330 20151203_142811 20160127_112356 20160225_165446 20160315_092039 20160526_152526 20160613_103601

    Thanks a lot for the support, and see you very soon for the next updates! Ho, and happy new year to all of you!

  • Leo

    Leo

    Hello there,

    here’s a little fan art / study of Leonardo, from the recent Teenage Mutant Ninja Turtle movies.

    20161004_leo

    20160410_leomakingof

    You can check out the HD version of the making-of on my deviant art account here: http://matou31.deviantart.com/art/Leo-Making-of-647712698

  • My talk at the Blender Conf

    My talk at the Blender Conf

    Hello,

    my talk at the Blender Conf about “Blender in a video game production pipeline” is online:

     

    Here’s the direct link if you don’t see the video above: https://youtu.be/I2vIXR5UizE?list=PLa1F2ddGya_8FBk61qbCdRu-otyPzFfDF

    You can now listen to my awesome French accent 🙂 And don’t hesitate to tell me what you think about it in the comments.

  • Capitole du Libre

    Capitole du Libre

    Hi there!

    Just a quick post to tell you I’ll be at the “Capitole du Libre” on November 19th and 20th at the ENSEEIHT of Toulouse.
    I’ll make a workshop/live demo about how to use Blender and Krita to create video game assets on Sunday 20th at 14:00. I’ll show how to model and texture floor tiles, crates and maybe more if we have enough time.

    Some of friends from RGBA will also be there and we will present a pipeline to create a short animated movie sequence, and, among them, Julien Duroure will also talk about rigging in Blender.

    Check out the official schedule:
    https://2016.capitoledulibre.org/programme.html

    Don’t hesitate to come and see us, it’s free!

    cdl

  • Blender Conf 2016

    Blender Conf 2016

    Maybe you’ve already seen it from my twitter account, but I’ll be at the Blender Conf this week. I’ll talk about how I use Blender for my video game. The talk is planned at 14:00 on October 28th, here’s a summary: https://www.blender.org/conference/2016/presentations/244

    Don’t hesitate to come and have a chat if you’re nearby!

    Maybe there will be a live (or delayed?) stream of the confs on the official website https://www.blender.org/conference/2016/

    So stay tuned if you want to attend the conference online!

    Peace!

    20161025_bconf

  • Sand Tower

    Sand Tower

    The painting of the day! This time I tried to mix 3D mock up (in Blender) with 2D over painting (in Krita). So here’s the Sand Tower!

    20160831_sandtower

    20160831_sandtowermakingof

  • The Crow Fortress

    The Crow Fortress

    Here’s the painting of the week. With a darker atmosphere than usual.

    20160828_crowfortress

    20160828_crowfortressmakingof

  • Pollution on the Great Sea

    Pollution on the Great Sea

    Hi there,

    It’s been a long time since I last posted a (more or less) technical article. So today, I’ll talk about something I recently added to the game: polluted water.

    20160716_171238The polluted water ring on the Great Sea

    I – What is polluted water?

    It’s very simple: it’s some kind of dark water that you can’t go through. If you do, it harms you, and if you stay too long, it kills you. In the game you encounter the polluted water around the 1/2/3 chapter zones.

     

    II – Why adding polluted water?

    The ideas behind adding polluted water to the Great Sea in the game are multiple:

    1 – The first goal is to be able to create “fordidden” zones, at least at the beginning of the game. This is somehow classical in adventure games: the player is not allowed to fully explore the world, because he could be lost very quickly without having any ideas about where he is supposed to go.

    Thus, by creating some polluted water ring around the main first islands, the player has only access to a small world zone to start the game.

    2 – Then, polluted water also has a meaning regarding to the scenario. It has a clear explanation as to why it’s there, but it also has consequences on living beings, especially animals (you might have already seen this in the demo).

    3 – Finally, I chose to use polluted water instead of other kind of “invisible wall” (for example at some point, I thought about a huge coral barrier ring to stop the player) is that it has to be removable at some point in the game (so that the player can finally go beyond) and it has to be quite cheap on the CPU too. Using huge 3D meshes (such as coral trees) all around the main islands would definitely be too laggy.

     

    III – How to add polluted water?

    Technically, this is a difficult point, because the world is quite huge, and as I wanted to create a pollution ring around the first islands of the game, it had to be a huge object (many kilometers long in the game scale).

    Like every other object in the game, the pollution ring has a visual appearance, but it also has collision and other properties. I had to work on both these aspects.

     

    Appearance / Rendering / Shader

    Regarding the visual appearance, I had a precise idea in my mind, so I designed the shader in a very special way:

    • I wanted something that moves slowly and that has a liquid feel to it. Hence I create a shader based on multiple moving seamless noise textures that I blend together with different scales and speed direction.
    • I wanted a solid pure black color that would clearly stand out of the blue of the ocean, so I didn’t use any lighting/shading calculations at all.
    • I wanted very sharp edges, just as if it was some kind of black oil standing on top of the sea, so I used a “classic” alpha cutout on the mixed texture.
    • I wanted to avoid obvious texture repetition. For this purpose, I created huge textures that are mixed with non multiple (prime) scale factors, so that the resulting visual appearance is quite unique for a very long distance.
    • I wanted the creation of the mesh and the uv mapping part in Blender to be as easy as possible (I’ll have to create kilometers of this stuff!): I chose to create simple forms, and the uv mapping is automatic.

    20160910_waterring1

    A section of polluted water in Blender. I can easily deform it and then applied automatic UV mapping without too much effort.

    20160910_waterring1bis

    The power of automatic uv mapping.

    • But at the same time, I want the edge to slowly scatter around as if there were smaller and smaller polluted stains as we get away from the polluted zone. So I chose to use vertex color as an alpha parameter to blend with the texture: at the center of the polluted zone, the whole texture is visible, so vertices are white. As we go near the edges, vertices are black, and the texture is invisible. The transition between those points is automatically computed thanks to vertex property linear interpolation. And because of the cutout rendering, it won’t show a smooth faded transition, instead it will slowly change the size of the cutout stains.

    20160910_waterring2

    The vertex colors in Blender: full opacity at the center, and full transparency on the outside.

    20160910_waterring3

    …resulting in the game in full opacity pollution at the center (on the right side here), and more and more scattered pollution stains on the outside (left side here).

    • Moreover, at some point, I want the player to be able to get rid of this polluted zone, so that he could explore the whole world without restriction. This means I also have to add custom parameters to animate the “amount” of visible polluted water, and this should be continuous and integrated well with other parameters.

     

    Collision and properties

    When I created this pollution ring, it rises many questions about the gameplay:

    1 – Can the player swim through it? if not, this means I just have to put some invisible wall to stop him from going there. I don’t wan’t this. This goes against the “freedom” I want to put in the game. Hence, the player should be able to swim through it.

    This means I have to deal damage to the player if he starts to travel a polluted zone. This means I have to set an awfully precise collision test. Here I can’t use the mesh colliders that have almost no details; this would be very unsettling for the player to take damage when he’s at the edge of the polluted zone: visually there would be no black water, but because he would be inside the collision mesh, he would take damage. I would hate that as a player.

    So, I have to code a pixel perfect collision test. Then, I must find a way to know if the player position is on a polluted stain. Maybe I could sample the screen at the 2D position of the player before displaying it, but this would require quite some work in the rendering pass, and it’s already quite complicated with all the crazy graphics effects that are already set up. So I chose to re-compute the black/polluted water material shader on the CPU, with the exact same parameters. Hence I ended up writing the shader both for GPU and CPU. I was quite scared of the precision results, but for the moment, this works quite nicely, and it is surprisingly accurate.

    2 – But dealing damage is not enough: I must ensure that the player can’t cross the zone even if he has plenty of energy (and apples, and all that stuff). How to do this? This forces me to computed a minimal length for the polluted ring to be sure that the player can’t cross it.

    3 – And finally, I also have to deal with the turtle: what happens if the player wants to cross the pollution on the back of his turtle? Does this kill the turtle? I don’t wan’t such a thing to be possible, so I chose to make the turtle refuse to go there. As soon as the turtle approaches the polluted zone, it will fade away any move in the direction of the pollution. This was pretty technical because I had to detect the nearest face normal, which is not straight forward.

    Of course this is some kind of invisible wall which may go against the “freedom” philosophy. But it also has some meaning in the game, because the turtle obeys you, unless you start to threaten its life. In this case, it makes sense to me. Moreover, I added a warning from the turtle to make it easier to understand. And, once more, you can still go swim in there if you really want to, but that’s your choice, not the turtle’s.

    20160910_104836The turtle doesn’t want to go there. It fears for its life.

     

    So that’s all for this post… They are always muuuuch longer than I expect. I hope this was interesting to some of you guys! Don’t hesitate to tell me what you think.

     

    PS: At the moment, I haven’t created the whole polluted zone. I’m pretty sure, given the scale of the final object, that other problems will rise (computation precision with high range distances, z fighting, …)

  • City Hunter

    City Hunter

    Hi there! Here’s a little study to practice ink lines. And mangas are very good at that.

    cityHunter7

     

    20160615_cityHunterMakingOf

  • Forest Temple

    Forest Temple

    20160607_forestTemple

     

    The painting of the week…
     

    20160606_forestTempleMakingOf

  • Jungle Falls

    Jungle Falls

    20160531_jungleFalls

    Here’s another painting, to keep practicing. Making-of:

    jungleFallsMakingOf

     

  • Snow Leopard

    Snow Leopard

    Hi there!

    Here’s another animal study and the making-of video. Don’t worry, I still work on the game, and the chapter 4 is now playable at 60%.

    20160518_leopard

  • Harfang

    Harfang

    Here’s a sutdy of an Harfang owl.

    harfangFinal

    HD Making-of: http://matou31.deviantart.com/art/Harfang-Making-of-614397022

  • Leopard Timelapse

    Leopard Timelapse

    Hello,

    Today I share an old painting timelapse. I think I’ll try to share graphical stuff more often. This is just drawing/painting practice and it has nothing to do with my video game, except this is a regular exercice I try to do to improve my art skills. I hope you’ll like it. Maybe you can find something interesting in my workflow!

     

  • 3 years of work…

    3 years of work…

    Hi everyone,

    It’s been (almost) 3 years since I started to work on “A Thief’s Melody”. Now could be the time to check how it’s going on. So here’s what’s currently playable:

    Chapter 1

    Chapter 2

    Chapter 3

    Chapter 4

    Chapter 5

    Secondary quests

    Beware, 100% playable does not mean finished! I still have quite some work to fix bugs, polish animations and designs, add music and sounds, …

    I hope to make all chapters fully playable at the end of September 2016. This may surprise you as I “only” made 3 chapters in 3 years, but you have to know that creating new levels is much less demanding/complicated now than at the beginning, because a lot of the coding has been done and I re-use quite some stuff from one chapter to the other (moving the character, fighting, HUD, lots of gameplay items, …)

    You might already know it, but the 1st chapter is fully playable in the game demo. You can finish it in ~40mn. The other chapters are longer than the 1st one (I would say between 1h and 1h30 each). So, by the end of september, I should have between 5h and 10h of gameplay (including secondary quests). Let’s do it!

     

    20130209_1200
    One of the 1st images of the game prototype (February 2013)20140731_19550720151206_200024
    Two more recent images… (July 2014 and December 2015)

     

    That’s all for today! See you!

     

  • Presentation in Junior High School

    Presentation in Junior High School

    Hi,

    Last week, I went to a Junior High School to present my everyday job: video game creation. So, once again, I share with you the PDF file (in French…):

    forumMetier

    Thanks a lot to the organisation team, and to every person who attended the presentation!