1. Zefyr: A Thief's Melody
  2. News

Zefyr: A Thief's Melody News

Polish & Fixes

Hello everyone! I hope you’re doing well.
I’ve been working a lot to improve Zefyr, and this month’s update is pretty huge.


I – Polish


[h2]Levels[/h2]
First, I took some time to rework some pretty old levels. They were functional but a bit empty and rough around the edges. I mainly worked on a mansion, a snowy tower, and a pirate chase (no precise names to avoid spoilers). I added grass, trees, ivy, rocks, lights, benches, dialogues, paths, animals, and various other details. I also fixed lots of little bugs and reworked some cutscenes (positioning, behaviors, missing elements). I can’t describe everything, but here are a few screens:

Some improved environments…

[h2]Items & Gameplay Elements[/h2]
I improved the grapple and the magnetic bow. Now, there are little particles and nice sounds when you use them. I hope it’s easier to read and understand too. The magnetic bow now uses the climb/magnetic energy instead of separate ammo, which makes level design easier and is much more forgiving for the player. I added various FX & SFX (bosses, weapons, camera placement on explosions, rock breaks, …)

The magnetic arrows bounce off walls with many visual fxs.

The grapple now has this violet/purple translucent look which is consistent with all the magnetic item/weapons.

I had to design logos and visual identities for the game various events/enterprises.

Breaking rocks is not that easy to code; you have to take into account the volume and orientation of the base shape to generate smaller stones.

[h2]UI[/h2]
I integrated some UI effects, including particles and sounds when you gain life or money and when you move around the menus. There are also background particles to bring life to the interface and a custom cursor for the mouse.

[h2]Optimization & Steam Deck[/h2]
I spent quite some time optimizing dynamic loading times in the open world. It’s not perfect but much better than it was. This enabled me to re-test the game on Steam Deck, and it works pretty well with good quality! I also rechecked all the font sizes (not too small) so that I could ask Steam to get officially validated for Steam Deck. Sadly, it seems I’m too small for them to review and stamp the game.

[h2]Rewriting Code[/h2]
While optimizing, I also cleaned the tag system and integrated the localization of controls (which is a 3rd party library) into my main localization system. It’s much easier to support now!

[h2]Audio[/h2]
On top of working on various sound effects for items, characters, and gameplay elements, I set up a centralized audio system to avoid the annoying comb effect when the same sound is launched multiple times at the same moment (or too close in time). But this forced me to decouple sounds from the visual effects. Still a work in progress.

[h2]Options & Menus[/h2]
As I optimized the game, I added several options regarding performance and other aspects:

  • FPS target
  • Full screen vs. windowed support
  • Changed the dropdown menus to simpler buttons, which are easier to navigate
  • Controls now have 2 categories, with hopefully more intuitive settings regarding axis inversions
  • Option to disable step echo
  • The item wheel selection is now easier to navigate from both joypad and keyboard/mouse
  • Better help display
  • Menus are navigable with the d-pad


Various graphical options.

With all these new features, I updated the demo on Steam.


[h2]II – Marketing[/h2]

As usual, I still struggle with marketing. However, I applied to the Indie Cup, the OTK Pixel Pitch, and the Jump High festival. I also entered the Steam Autumn Festival with the Zefyr demo. Hopefully, these will bring some visibility to the game.

I also tried to post more often on my social media (Twitter, BlueSky, Threads, Discord) and even reached out to streamers/players on Twitter, but without any success for now.

And that’s it for now!

Marketing & pet the dog

Hello there !

Here come the latest news ! Last month I essentially spent my time on 3 subjects:


[h2]I – Marketing[/h2]

And yes, you know it now, I force myself to spend more time on marketing… and boy is it difficult. I tried to optimize my reddit ads, but I was disappointed in the results. It seems the longer the ads run, the lower the conversion rates. So I tried to go back to organic posts. One did quite well on r/pcgaming:
https://www.reddit.com/r/pcgaming/comments/1byxmvv/hi_ive_been_working_solo_on_zefyr_a_thiefs_melody/

I also took the time to apply to 4 festivals for this summer. Sadly, I received negative answers from the last ones I applied too. A bit harsh for the moral.

On the Steam side, I built and fixed my full game and the prologue version too to have them validated by Steam, and they were accepted ! I have officially passed the Steam quality test. From now on, I shouldn’t be annoyed with the process anymore. I also reworked the tags for the Steam pages. It seems to perform OK for the prologue but not that much for the full game. People don’t discover it on Steam. But the prologue is free, so I guess this can influence things.

Finally, I kept mailing streamers, but no luck this time.
However, one streamer from my previous contacts tried my game and interviewed me! He was super nice and it was a pleasure to answer his questions. You can check out the interview (in French) if you want to know more about how I work: https://www.youtube.com/watch?v=BFKFDEz1bLs

So in the end, a bit of a depressing month for the marketing except for the reddit post & the interview.


[h2]II – Mini Game[/h2]

Last month, we had holidays here in France, and with the kids at home, it’s always a bit difficult for me to work fully on the game. So I worked on a small project that I called Lantern Island. It’s a small wholesome game where you play as Maya, a young girl trying to save the lantern festival on a nice cosy island. It’s supposed to be somewhere between “A short hike” & “alba”. This is one of these “small games” I occasionally try to create to test myself. I think I’ll release this one when it’ll be more polished. Here are a few screens:


I had to work on many NPCs and animals too. I’ll add these back into Zefyr, so that I kill two birds with one stone.
And I took the time to code the famous “pet the dog” interaction. Speaking of which…


[h2]III – Zefyr[/h2]

Yes, I also worked a bit on the game itself. Here are a few improvements:

  • I reused the “pet the dog” code from Lantern Island. You can now pet the dog in Zefyr too. Even if it’s more of a fennec fox actually.
  • Descriptions for all inventory objects
  • New footstep sound visual FX, hopefully less annoying
  • Shadow under the character when jumping to help for precise landing


And that’s it for this month. As usual, thanks a lot for your support & patience !
Take care!

NPC & Marketing

Hello there,

Here’s the usual update of the last month(es). I mainly worked on NPC & marketing during January & February.


I – NPC (Non Playable Characters)


During the past weeks, I upgraded my old placeholders for the NPC (the characters you’ll have to interact with in the game). For each NPC, I need to work on:

  • Visual design: I usually start with doodles on my sketch book. I try to also get an idea of the basic color scheme.
  • 3D Modelisation: I tend to reuse old model parts if possible (hands for example)
  • Texturing: I paint the textures in Blender and/or Krita and map them on the character
  • Rigging (creating the skeleton): I almost always start from another skeleton that I copy and scale/adapt to the new character morphology. I might encounter difficulties for the clothes especially (be sure they dont collide with the limbs for example). Some designs are more exotic than others regarding this point, and it might be a difficult problem to solve.
  • Animation : I create at least one idle animation, and usually 1 or 2 more (speak, variations of movements, …)
  • Integration in the game: I have to put the NPC in the game, and be sure that evertything loads & links correctly
  • Coding the presence logic: depending on time and actions done by the player, the NPC are not at the same place at the same moment.
  • Coding the dialog logic: depending on your actions, the character won’t say the same things. They can also create new quests or complete some. They can add items to the inventory, change story key points, …
  • Dialog & names localization: for each line, I have to translate it in French and English.
  • Avatar: I have to paint a 2D version of the character that will show in the dialog UI.
  • Now that I have all my workflow and tools set up, it generally takes between a few days and two weeks of work for each character, depending on the complexity and originality. This doesn’t include the debug of course. I sometimes find problems much later.


So in the end, I added/polished 8 NPC. Here are a few screens:


There are still other ones to create of course, but it’s starting to be nice.


II – Marketing


Regarding the marketing:

  • I still work on reddit ads. They bring some regular visits to the Steam page.
  • I started to contact streamers (youtube/twitch) to market the demo. I had to update my presskit with recent screens & logos. I reached out to 50 people, but it only ended up with a few videos. However, they are really nice (like this one, or this one (in French) for example) and the streamers were happy with the game. I need to keep on working on this.
  • Finally, I keep on trying to enter festivals. I recently took part in the Ninja & Pirates festival on Steam, but it wasn’t that successful for me. I also applied to the Cozy Family, WASD Curios & the Mix. We’ll see what comes out of it.



III – Bug fixes


Not a lot to signal here. Mainly:

  • arrow collision fix (this was a tough one, I couldn’t replicate it on my PC, so a big thanks to “Les Indés Primés” channel for helping me)
  • now saves in turtle mode
  • a few textures fixes here and there


This allowed me update the demo on Steam.

And that’s it ! The game is improving little by little. As usual, thanks a lot for your support and patience.

Take care

Happy New Year & Bug Fixes

Hello there, and a Happy New Year to all of you! I wish you health, joy, happy moments with family and friends, and fulfillment in your projects.

On my side, the last month has been quite productive with lots of little enhancements. It’s quite pleasing to see all these small upgrades slowly propagate through the entire game.


Level Upgrade


First, I worked on the visual upgrade of an old level that was far behind the others. I can’t show too much without spoiling, but you can check this out:


Still some work to do, but it’s already much more understandable than the previous “blocking state” look. I added crates, fabrics, desks, armchairs, sofas, pinboards, billboards, plants, arches, and architectural elements.


Doors & Enemies


I also took some time to start working on two things that were on my to-do list for a long time: signaling locked doors to players and adding contextual idle animations to enemies to tell a story without explicit dialogs.


Here you can see a mining robot. Yeah, I guess it’s better with animation and sound.


I used some kind of “hologram” to display the locked state of the door. I also use the hologram look on various other screens/displays/technological stuff throughout the world, so I thought that was the most logical thing to do. Plus, it’s pretty immediate to understand.


Unexpected Complexity



At some point, I added a super small improvement: displaying the maximum number of items that the player can collect. Surprisingly, this led to tricky questions about what I should do with unpickable items: destroy them? But when? What if the player can eat a few apples to regenerate her life and THEN free up some space to grab the apple on the ground? If the apple is destroyed the first time she tries to pick it, this feels unfair. Then should items be left on the ground? For how long? Should it be saved? What happens if the player moves to another island and gets back? And what will be the feedback for players to understand that they can’t take the item? It’s much more complex than one can expect, actually…


Many Bug Fixes & Improvements


In the end, I worked on ~ 250 fixes and updates, among which:

  • fix old collision bugs
  • fix bugs regarding missions, stories and dialogs
  • fix animation of robots & pirates
  • fix dialog translation
  • fix confusing stuff
  • fix graphical stuff (textures, reflection probes, particles, outline, cutscenes, shaders, bubble font size for 4K) on chapter 2
  • clean database (old prefabs)
  • fix old bugs arising from mode conflicts (what happens when cutscene+dialog+power up at the same time for exemple ?)
  • add NPC Reno in zoological center + power up animal detector
  • add accesibility option for camera moves
  • improve full item capacity handling & feedback
  • add fx & sfx for steps on terrain, rain, snow & breath in cold
  • clean/organization on disk for il2cpp compilation (optimized build & console compatible)
  • improve saves: bugs fix, clean & compatible steam save
  • upload test build to steam


And that’s it ! As always, thank you immensely for your ongoing support! I truly hope to be able to show the final game this year. If you want to support me financially (if you don’t already) you can check out my Patreon. Thanks a loooooot !

Peace !

Level Editor

Hello there!

Another month has passed, and for once, I’ve focused my work mainly on one thing. Remember my last attempt to create dynamic and slightly authored topologies from the last post? Well, I’ve taken it a step further. It’s now evolving into a level editor for Zefyr, and hopefully, other games. While I’ve already designed lots of levels for Zefyr directly within Blender, I’ve noticed some struggles in my workflow. Hopefully, this custom tool could help me iterate faster. I think I’ll use it to create bonus levels.

Anyways, here’s how it looks now:
[previewyoutube][/previewyoutube]


I – So what can it do ?


Here are the main functionalities:

[h2]TOOLS[/h2]
  • Base topology generated from a flow map and user-authored streamlines
  • Tile brushes created from basic quad and tri tiles
  • Auto creation of missing tile configurations when possible
  • Auto-smooth for normals
  • “Smart” gizmo snapping to the best neighbor to paint
  • Horizontal and vertical radii for brush size
  • Random variations from the tile set when available
  • Erase modifier
  • Selections
  • Entity brushes to create specific objects on the terrain with various parameters (snapping, random rotation, scale variations, propagate normals, …)
  • Scatter/spread mode for entities to quickly create vegetation for example
  • Warping/deform of the level through the underlying grid (FFD). Dynamic repositioning of entities
  • Undo

[h2]UI[/h2]
  • Basic UI and keyboard shorcuts
  • Previews for tile & entity brushes

[h2]SAVES[/h2]
  • Export to binary & ascii fbx
  • Save & load to json format


And I used it “for real” to create a 1st level that I imported into Zefyr! Yay. Finally, I have a fully functional pipeline. Check it out:


OK it’s a bit empty for now, but it’s only a matter of adding other brushes (rocks, vegetation, enemies, rewards, etc…).


II – What will it do ?


Of course, there are bugs, it’s not super stable, and it’s still missing many features, but in the end, it should have the following:

  • GLTF export (not for me at the moment, but if I plan to release this tool one day, it should be here, plus I love their open standard philosophy)
  • Ability to manually draw topology with a single stroke with automatic smart connection to already existing topology
  • Copy-paste (which will be something, given that the underlying topology is never the same)
  • Combining both previous tools: remodel an existing level by hand drawing contours/underlying topology. This one could be a killer feature. I’m still not sure if it’s even possible, but I like the idea
  • Layers
  • Custom properties on entities
  • Placement correction for each entity (move/scale/rotate)
  • Brush/entity/color sampling
  • Vertex color painting (mainly for terrain texture variations)
  • 1D & 2D tile brushes (for electric wires, fences, walls)
  • Add Wave Function Collapse to create general rules for automatic tile placement/validation. Imagine painting a road inside an existing town, and the surroundings would automatically adapt, creating tunnels, bridges, and connections where there should be.
  • This can also lead to smart brushes generating content semi-procedurally to directly paint districts/biomes
  • Also giving smart brushes the ability to spawn entities dynamically on tiles. This should allow painting buildings with windows, air conditioners, antennas, plants, or whatever could be on top of them with a single stroke.
  • Fill tool to repaint/change the look/style of whole areas at once


So this was a big month regarding tools. Oh, and now I’m on bluesky too: https://bsky.app/profile/oneiricworlds.bsky.social. Actually I’ve got way too many social networks.

As always, thank you immensely for your ongoing support! If you want to support me financially (if you don’t already) you can check out my Patreon. Thanks a loooooot !

And that’s it!

Take care.