Monday, March 11, 2024

RLV 2.9.34

Hi !


I wasn't sure about releasing this version, but two crash-to-desktop (CTD) bugs coming close to each other kind of forced me to.

The first CTD occurred when receiving a folder to #RLV from an object, with a name containing slash characters ("/"). Normally, when this happens, the RLV cuts the name into individual parts, removing the slashes, and creates as many folders with the corresponding names, parenting them in a chain of folders.

For example, when the folder is named "#RLV/~A/B/C/D", the viewer would create this structure :

#RLV

| some folder

| some other folder

\ ~A

    \ B

        \ C

            \ D (this is the original "#RLV/~A/B/C/D" folder, renamed and parented to the ones above)

                | Item

                | Item

                \ Item

 

Better, it ignores the folders that already exist so your inventory is not unnecessarily cluttered. So if ~A and B already exist, the viewer would create only C and D. However, if D already exists, a new D folder would still be created since we don't want to pollute existing folders with additional items (because the RLV works with folders, not with items), leading to potential doubloons.

But since the addition of folder thumbnails, that feature failed spectacularly, crashing the viewer. I won't go into boring technical details, but that's the kind of stuff several viewer devs have been scratching their heads about. In short, that code relied on a client-server process that simply doesn't exist anymore, so we have to do it another way.

This version of the RLV has a tentative fix to it, at least it won't crash anymore, and the folders seem correctly created, but it seems to work only once or twice in a row, after that strange things may happen to that folder (the received folder is not renamed correctly, or it is named correctly but not parented correctly, or both). The "strange things" won't ruin your inventory, don't worry.


The other CTD bug would happen when entering some Chinese characters in chat or in IM. I could reproduce this bug in 2.9.33 (the first version with PBR), but I must admit, I don't speak or read a word of Chinese so that was just me monkeying on my keyboard until it broke (the viewer, not my keyboard). Problem is, that crash is violent and the viewer log does not contain any relevant error. I could never crash this version, which includes emoji support, and probably some fixes from LL about that precise crash. But I didn't see anything about hat in Git. Nevertheless, no amount of monkeying on my part could crash this version, so I'm hopeful that this is fixed. I'll need someone who actually speaks and reads Chinese to confirm that 2.9.34 does not crash for them.

 

You can download the Windows version from http://www.erestraints.com/realrestraint/

The MD5 hash for the Windows version is :
6ab8ea2f7b525f20e16acf0babf59507

The Linux and Mac versions are proposed by Chorazin at this address :
https://sourceforge.net/projects/kokua.team-purple.p/files/RLV/


Have fun !

Marine

 

Friday, February 23, 2024

RLV 2.9.33

Hi !

 

After quite a while integrating and testing this version, here is the RLV with Physically Based Rendering.


Here is the changelog. It may seem small, but integrating PBR into RLV was no small feat. That task was mostly done by Chorazin Allen for Kokua. Thanks Chorazin !


- switched to PBR (Physically Based Rendering) to be up-to-date with the 7.1.2 SL viewer codebase.


- known issue : rigged mesh hair (and other rigged alpha-blended surfaces) pokes through @setsphere.


- known issue : materials are rendered normally when @camtextures is active, instead of being gray. This is because at the moment they are rendered during the rendering cycle, there is no way to tell what object a material is attached to, hence whether the object is in-world or attached. So they are all rendered normally instead of made all gray indiscriminately.



You can download the Windows version from http://www.erestraints.com/realrestraint/

The MD5 hash for the Windows version is :
b805131a271a2cc5b19a85d64caab6fd

The Linux and Mac versions are proposed by Chorazin at this address :
https://sourceforge.net/projects/kokua.team-purple.p/files/RLV/


Have fun !

Marine

Thursday, January 4, 2024

Flight of the Swallow : About the voices

Hi there, and happy new year !

As I'm developing my game, Flight of the Swallow, one thing has constantly been a concern of mine. Character voices.

If you don't want to read, here's the "tl;dr" version :

I am progressively replacing the voices I created with xVASynth by other, clearer voices, that don't belong to video game characters so I won't have any moral or legal issues. I've been itching to do that for a while, but technical reasons (lip sync in particular) were holding me back until now.


Since pretty much the beginning of the development of this game, i.e. at the end of 2022, I wanted it to tell a story, and to make it told by the characters themselves. And what better way for a character to tell a story than to make them tell it with their own voices ?

Problem is, hiring voice actors costs quite a bit of cash, and I want my game to be profitable, at least a little. It probably won't pay the bills, but I'd like voice acting not to take all of its budget if I can help it. Not to mention that it requires finding the actors, convincing them to voice characters in an adult game, reserving the recording place, and other headaches... Ugh. No thanks. I already have a million other things to do. And last but not least, I'm writing the story and the dialogues as I go, so I want the voices now, not in two years. And I want to be able to tweak a voice later if I'm not satisfied with it. You can't do that if all you have is one recording session and no time machine.

Plus, there is lip synchronization. When a character speaks, you want to see their lips (or whatever) move in sync, right ? I know most games don't do it properly (I'm looking at you, Elden Ring) or even not at all, but some are pretty good at it. It makes the characters look so much more natural. Until recently, like, last week, I had no idea how to create such data when recording an actual human being saying a line that I wrote for them. Probably a few commercial tools exist, but they're meant for big studios, not for a solo dev like me.

So, with all those requirements, what was the obvious solution ? xVASynth, made by Dan Ruta. Its purpose is to let a modder add to the story of a game by making its characters speak almost as naturally as if the original voice actors had been saying those lines. For example, if you want to make a mod for Skyrim where Esbern teaches Delphine how to cook apple cabbage stew, and you want it voiced, no problem, xVASynth got you covered.

It's free, it has many voices, you have full control over how to make one voice pronounce the line exactly you want, and what's more, along with the audio file, you get a text file that contains all the relative durations of the letters (for v1 and v2 voices) or phonemes (for v3 voices). In my case, after programming the necessary stuff to turn that file into actual visemes (the facial expressions that look like the character is actually pronouncing a phoneme), all I had to do was paste the dialogue line in xVASynth, click "Generate", tweak the pitches and durations a bit until I was satisfied, then when I was done, just move the two files to the target folder in the Voice folder. That was it. Easy peasy.

The only requirement is that the generated voice files cannot be sold, which is why xVASynth is primarily used for free mods for Skyrim, Fallout, Cyberpunk etc. I made it so my game would use the voices the same way, like a mod, to be downloaded separately and for free. Making them optional clears that part since the voices are not a part of the price of the game, but let's be honest, every player expects the game to be voiced, it doesn't matter where the voices come from, and it would just have been one click away anyway.

If you're curious, here are the voices I used in the demo until now :

Player: Female V (Cyberpunk 2077)

Sandy : Panam (Cyberpunk 2077)

DAL: Delamain (Cyberpunk 2077)

Mother Superior : EDI (Mass Effect)

Virginia: Judy (Cyberpunk 2077)

Dave : Danse (Fallout 4)

Frank : Jacob (Mass Effect)

Robert : Illusive Man (Mass Effect)

Ignatus : Codsworth (Fallout 4)

The unidentified voice : Miranda (Mass Effect)


To me, that solution held water six months ago. Not so much nowadays, after all the talk about Midjourney and other generative AIs, and how they are often trained on copyrighted material.

xVASynth is basically an AI that has been trained to speak like certain video game characters, whose voices belong to the actors who created them. As for the voice files used as training material, they belong to their respective editors (for example CD Projekt Red for Cyberpunk's voices, the ones I use the most), so it pretty much falls into the "trained on copyrighted material" department.

So six months ago, I was okay with the idea of providing the xVASynth voices separately, for free, and let the player decide whether to download them and add them to the game or not, because it wasn't really an issue for anyone at the time. Now, it is becoming one.

 

It's not really the problem I have with this, though. The real problem is ethics.

I'll say it right here, people are on both sides of the fence when it comes to using the voices of video game characters in my game. Some find it cool (I'm one of them, obviously, I love those characters, especially V, Panam and Judy, and that's one reason why I wanted them), others find it weird or shady. I heard both.

xVASynth's little brother, xVATrainer (which was created to train the AI in the first place), has a "do not train" list. I wasn't aware of it before recently because I don't use xVATrainer, and simply because the latter was released only a few months ago. And it just so happens that one Cherami Leigh's name is present in this list. Mrs Leigh dubbed Female V (i.e. the female version of the player character) in Cyberpunk 2077, and I used her voice for the player character in Flight of the Swallow. At the time of this writing, she is the only one in that list whose voice I used. I really love her voice, and I absolutely wanted it in my game. Initially, I wanted it to be Sandy's voice, but V speaks like an ice-cold killer (or an adorable murderpuppy if you prefer), while Sandy is one hot-blooded, loud troublemaker. And who's better suited to dub such a character than the hotheaded motor-girl known as Panam Palmer ? The player character in my game, however, is Sandy's conscience/super-ego/guardian angel (pick your favorite), so a cool, soothing voice is perfect for her role.

A few months ago, there was a turmoil in the voice acting world about adult mods using character voices. I don't remember whether it was about Fallout 4, Skyrim or Cyberpunk, but some voice actors clearly stated that they did not want any AI to be trained on their voices. Mrs Leigh was one of them, hence her name being in the "do not train" list. This explains why the "Female V" voice has been taken off xVASynth's list of voices (unlike, for example, Male V, dubbed by Gavin Drea). So, officially, Female V is no longer a voice anyone is allowed to use.

Mrs Leigh does not want her voice in any game she hasn't voiced herself, and that's perfectly understandable. So I need to remove it from this game. But replacing the player's voice in my game with another whose actor is not in the list would not be enough. Voice actors in general are not happy when their voices are reused without their consent, even when it is made clear (like I did) that we are merely imitating their voices, not impersonating their actors. I'm trying to keep this post technical and neutral-toned, but I actually do care about that. I wouldn't be happy if someone trained an AI on my own voice to dub characters in adult games either (nobody will do that, I'm no voice actor, it's just for the sake of the example). To me, replacing only one voice is not enough. They all have to be replaced. After all, maybe Emily Woo Zeller (who voiced Panam) might want her name added to that list tomorrow, or next month. It is not because she is not in that list today that she is okay with anyone using her voice to say anything she didn't personally approve, at any time in the future.

Long story short, I wasn't aware that the voice actors had a real problem with this, and now I am, after I stumbled on xVATrainer's "do not train" list. I could say I wish that list existed in 2022, but I don't. Why ? Because I'm glad I could develop my game with those voices in the first place. Doing so taught me a lot about how to voice a character, how to write the dialogues in a way that they sound good when voiced, and how important the tone can be when you want to convey a message. Not to mention that I had to code ways to play the voices properly (with the correct AudioMixers, sound occlusion, reverb, default voices in case of a missing file, delays and pitch in various time scales, etc), with lip sync on top of it. Without the voices, I would have had no material to develop all that stuff.

There's also a more general issue. I read two words that made me think seriously about this, and I think those words are what triggered this post, and made me want to redo all the voices. Those words are "exposure burn".

In plain English, the more a voice is heard, the less value it has. Players and investors don't really want to always hear the same voice (real or AI-generated), so if suddenly all indie games used, for example, Panam's voice for their main protagonist, Mrs Zeller would quickly find herself out of a job because players would become fed up with hearing the same voice over and over again. It wouldn't be an issue at my small level, but if everybody did that, then it would become one.

To Mrs Leigh, Mrs Zeller, and the few other voice actors I used the voices of, if you ever read this, I will not use your voices after all. Last thing I want is to hurt your business. But let me point out that I'm a fan. I love your voices, that's the prime reason why I wanted them in my game in the first place.


Now, I'm going to use new voices that don't have copyright or moral issues. Which means I have to stop using xVASynth to create them. Problem is, that also means saying goodbye to the lip sync.

Or does it ? I figured out a solution to make lip sync files automatically and quickly from any voiced speech. It transcribes the speech to a timestamped text file, which plays pretty much the same role as xVASynth's text file. If you're curious, I'm batching the use of a local Speech-To-Text library. In fact, my engine can use both lip sync files, so even without this solution, I could still align the lip movement with the voices manually with xVASynth and Audacity, but that takes several minutes per file. And at the time of this writing, there are 4200 of them (a little less than 1400 in the demo), so I much prefer the automatic version.

So now I'm in the process of replacing all the xVASynth voices with other, clearer and more natural ones. And boy, do I see the difference. When I play Panam's voice in a wav file then the same line with Sandy's new voice immediately after, the difference in quality is obvious. I didn't realize how bad the sound quality was before.

This is a big undertaking. There are a lot of files to redo, more than a year of work, and the creation process is not free. It will take months to do. But this puts my mind at ease for the future. Like Sandy, I too have a conscience that just won't leave me alone.

Also, well... xVASynth gives you a lot of control over the pitch of a voice, down to the letter or phoneme, and quite often the first generation is pretty bad so one has to change the pitches and durations manually until it sounds good enough. This is a lot of micromanagement, and since my accent is probably different from yours, what sounds good to me might not sound good to you. Sometimes, it may even sound completely off. Not to mention that xVASynth voices struggle on some words (it's impossible to make Panam say "Machine" properly). The new voices sound much more natural.

See for yourself. Here is the old version (same video as in the teasing blog post from last month) :


And here is the new version, same scene, with the new voice :


Look at this lip sync. Mmmm.

Playing both videos at the same time, pausing one after Sandy says one line and listening to the same line in the other video, helps a lot with comparing both voices.


Sandy, when she was voiced by Panam, used to have an American accent. Now, she has a clear British accent. Fun fact, I initially wrote Sandy as a British army girl from the Royal Air Force. After all, her last name, "Curnow" derives from "Kernow" which means "Cornwall" in Cornish. And I wanted her to have some kind of British sense of humor. So I had to change her story a little to make her American and that changed her personality in a way that I was not completely happy with. And now, I have to retcon her to be British again, but still a soldier in the US Air Force. Her background in the journal had to be amended (again) to that effect.

Her new voice sounds a lot like the voice of Claudia Black (Aeryn Sun in Farscape), or Dominique Tipper (Naomi Nagata in The Expanse), don't you think ? But it's neither of them. Also, the player's voice and Sandy's are now the same (the former is a little higher-pitched, after all she is "Sandy's little voice"), unlike before.

Don't be fooled by Sandy's new smooth voice, though. The video above shows her when she's calm. She's... not always calm. She is just as capable of yelling at everyone (even at the player) as before.

I hope you'll like the new voices !

Marine


Friday, December 15, 2023

Flight of the Swallow DEMO

Hi !

I teased about it last month, and today I would like to share with you a working demo of the video game I'm working on, Flight of the Swallow ! As a reader of my blog, and probably a Second Life resident as well, you are among the first to be able to play it. I will probably publish the link soon on DeviantArt or somewhere else, but for now, this is just for you ! And just in time for the holidays, so Merry Christmas !





The current version of the game is 0.5.4.2, you can download the demo here : 

https://www.mediafire.com/folder/4gpbm0y12kwg2/Demo


Please note : This is the folder containing the zip file, not just the file itself. You will also find a sub-folder containing saved games that you can download to your "C:\Users\<your_username>\Documents\My Games\Flight of the Swallow\Save" folder, in order to load from those milestones, if you're stuck somewhere but you want to see what's next. A save is 2 files : a .sav and a .jpg file. The .sav file is the save itself, and the .jpg file is simply its screenshot that the game displays, it is not mandatory but it's a nice to have. Both have to have the same name and be put in the Save folder.

Unzip the file where you want, it does not install itself. When you want to remove it, simply delete its folder. You won't lose your settings nor your save, for those are located in your "Documents/My Games/Flight of the Swallow" folder. If you want to move it to another location, feel free to do so, the game does not care where it is on your hard drive.

Normally, the retail game will come without voices, but since the demo is free (and only a part of the retail version), there is no point in providing the voices separately, so they are part of the zip.

Speaking of unzipping, you need 7-zip to extract the files. If you don't have it, you can find it here :

https://www.7-zip.org/


Attention : If you get an error while decompressing the files, it is probably because of the voice files. Some of them are very long (for example when DAL says "attention, all personnel, aligning with the retrograde orbital vector now, blah blah blah"). To fix this, unzip in a folder with a very short path (not just the name, the whole path), for example "C:\FOTS", and move the files elsewhere afterwards. This is because Windows has some limitations when it comes to path lengths. If it still happens even with a short path, try to decompress the archive with a right-click and using 7zip's menu item, instead of the regular Windows extractor, that helps too.



Don't hesitate to run an antivirus or two on the files, you never know. My machine is supposed to be clean, but it costs nothing to check.

Also, please read the Readme text files, alright ? They're not long. I know nobody reads them but they explain a lot of stuff that would leave you confused otherwise.


If you like this game, please join its Discord server to discuss!

 

In this game, you play the little voice in Sandy's head, the main character. Only she can hear you, and of course, you control her (even if she'll never admit it). So, in a sense, you are Sandy. Sort of. (*)

This is a complex and challenging game. Not because it is hard on purpose, but because you mostly float in zero-G, in 3 dimensions, and you have to use a controller to navigate. Sorry, it isn't playable with the keyboard and mouse yet, although some parts are already implemented.

So, I recommend that the first thing you do after launching the game is to go to the Journal, then read the Tutorials. Sandy will eventually ask you if you've read them anyway, and if you didn't and pretend you did, she won't explain anything and you will feel lost.





Once done, start a new game, watch the short cinematic...


 

Give Sandy some time to wake up...


 

Let her realize how much trouble she is in...

 

And then you can start trying to get your bearings and controlling the girl. To put to test all that you've learned by reading the tutorials. Because you will read the tutorials, right ?


Of course you will. That's the only way you'll move Sandy efficiently and make her go where you want. Winners don't use drugs, but they do read the manual.


And just when you've gotten the hang of it, things will snowball from there. Between one A.I. going haywire...


And another one shutting it down...


You'll have a lot of work to do and a lot of places to go in order to set things right again.





Once that's done, you'll start getting answers to some questions... and even more unanswered questions.



 

 

 

You'll learn that everybody loves Sandy...

 

And you'll meet interesting people.







As a demo, it is meant to show you most of the mechanics of the game, not really to reveal the story. As such, it is not limited in any way except its length. It stops when you reach a certain point, and when you get there Sandy will tell you that this is the end of the demo.

This is not the whole game, far from it, only the first part of the first day. At the time of this writing, Day One is complete, I have started working on Day Two, and I want the game to span over more than two days. And by "complete", I mean the story of the first day and all its events are written and implemented, not that the levels are finished, not by a long shot. Most of the places are still empty and unfurnished. You'll see what I mean by playing the demo. But you'll also see the mechanics of the game, how it is played, that kind of stuff.

I work on the game itself every day so it changes often, but I am not publishing it yet. The demo is stable and seems like a good way to show people what I'm working on, but it won't be updated as often as the game. It will be when it strays too far from the retail game to be called a "demonstration" anymore. I'll probably lengthen the demo at some point, though, as it feels a bit short to me at the moment. But one thing at a time.

The demo is free but the retail game won't be. However, I don't know yet how I will sell it, nor on what platform, nor what its price will be, I'm still far from that point at the moment, as the game is like in pre-alpha stage. It is still probably a couple years in the making so there is time. For now, have fun with the demo !

By the way, "pre-alpha" stage means there are bugs. Lots of them. Most of which I am probably not even aware of yet. I have done my best to fix the ones I spotted, of course, but a game that is under development cannot be bug-free.

So, expect bugs and surprises while playing the demo, and save often ! Your saves will remain compatible as much as possible throughout the development of the game anyway, you won't have to restart a new game every time a new version comes out. Unless absolutely necessary, naturally, but I'm doing my best so that doesn't happen.


Lastly, Flight of the Swallow is a game of skill. Sandy won't gain levels or learn new powers, but you, the player, will. Every step along the way is a new challenge, an increasingly difficult one. The very first one, when Sandy asks you to "grab that handle over there", you will wonder how the hell you'll manage that feat. But if you persevere, fulfill the challenge and keep going further, you will realize that this very first challenge was child's play, in comparison to what comes after. You might want to give up at some point. Don't. This game requires precision and patience, but Sandy gives you all the tools you need to beat it, and more. She's a resourceful girl. Show her that you are too.

But if the game feels too difficult for you, I have one word for you : "Options". You can turn on "Gecko Girl" mode which allows Sandy to grab anything she wants, not just handles, you can activate the predictors (I think they're active by default), you can modify the power curves to give yourself more precision, and you can use slow-motion pretty much at will. I want the game to challenge you, but more importantly, I want you to beat those challenges, to learn new stunts and tricks, and to feel good about it. That's what this game is all about.


Have fun with the demo and happy holidays !

Marine


(*) Yes, you are Sandy. You control her entirely. And you can also talk to her and she can hear you and talk back. You play her conscience. Her super-ego. Her guardian angel. Pick your favorite.


Update : After a few days, the feedback I got was mostly about the game being too difficult. It's true, controlling a physical character in zero-G is challenging, but how could it not be ? You need 3 axes for the torso (pitch, bank, twist), at least 2 axes for the legs (thighs, shins, and possibly spread the legs but that's more circumstantial), and at least 1 axis for the arms when in restraints (up and back), so that makes at the very least 6 axes to juggle with. Add the camera to that, which is at least 2 more axes (up/down, left/right). If I removed any of those axes, you would find yourself unable to do some moves and to navigate in zero-G properly, and it would be even more frustrating than it is now.

With a controller that provides only 4 axes and 2 half axes, it is bound to be a challenge. So there is no way to get any simpler than that, no matter how hard I tried, unless I started using an AI to actually play in the player's place, but where would be the fun in that ? A friend of mine plainly told me that the game should guess what the player wants to do, and adjust accordingly. Well, a computer can do many things, but it can't "guess" what a human has in mind, sorry.

So yeah, it feels daunting and frustrating when you punch the controls haphazardly, but if you use all the helps (the predictors in particular), if you read the tutorials and watch the embedded videos, and if you practice, you eventually learn new skills and get Sandy to do what you want and to go where you want her to go. I've seen this happen more than once, all it takes is practice. It's a game of skill, it doesn't take you by the hand, so everything you accomplish in it is your own doing. I do acknowledge that the barrier to entry is high, though, and that's a real concern for me. A good game should be easy to learn, hard to master. This is not the case here, but I'm working on ways to make it easier.

From v0.3.14.2 and up, for example, you can press LB+Y when grabbing something to propel Sandy towards whatever your camera is aiming at. This makes moving her from handle to handle a lot easier. It's weaker than making her sling around a handle or pushing her with her hands, but it's a very useful tool, especially for beginners. You can also keep LB pressed at all times, if you want, to keep Sandy stiff so you don't have to bother with moving her legs as she keeps them aligned with her body when you press and hold that button.

The first part of the demo is dark until you manage to restore the power. I'm still working on the lighting, trying to find a good balance between the darkness and the ability to navigate in the corridors during the alert.

Please remember that the game is nowhere near finished, this is just the beginning, I pointed out that it is pre-alpha, under development and unfurnished. It is not remotely close to qualify as a full game, there's still a long way before it can be called that, and it will probably look very different from what it does now.

I hope that clarifies a few things.



Changelog


0.5.4.2 (hotfix)

- Fix: The notifications were over all the other UI components, making it impossible to read the tutorials when Sandy mentions them. Now, they are behind and the journal entry buttons are darker, less transparent. Same for the saved games.

- Fix: The notifications didn't disappear when loading a game while they were visible.

- Fix: We should not be able to slap Sandy's butt when she's still frozen on her bed.

 

0.5.4.1

- Added: Small screen notifications at the very beginning of the game, when the player is still at the learning phase. They remind how to move the camera and Sandy's body, grab stuff, use the arms etc. Like a condensed tutorial that is always on-screen. They disappear once Sandy grabs the handle near the window, or after 6000 seconds, whichever comes first. The only problem, for now, is that if the screen is wide enough, the notification toasts may stack up too high and the first one would end up going off-screen.

- Changed: When in animated mode and Sandy's arms are restrained, i.e. when her Reach ability is lowered enough, she is not able to stand up from the "prone" stance anymore. This is because when in ragdoll mode, you can't switch back to animated when she's laying on her belly, unless both hands are touching the ground on both sides of her body, which is not the case when they're tied behind her back, obviously. So be careful, if Sandy is in cuffs or in tape and you make her go prone, you won't be able to make her stand up immediately anymore, you will have to go to ragdoll mode first, and do some gymnastics to make her stand up physically. I know it's more difficult that way, but it is also more consistent with the gameplay. I could have made the prone stance forbidden while in cuffs, but there are cases when prone is the only stance available (when switching to animated mode while laying under a table, for example), and it would have been confusing for the player as well.

- Changed: When in animated mode and Sandy's legs are restrained, i.e. when her Walk ability is lowered enough, she won't be able to crawl anymore. Specifically, this happens only when her legs are taped together in the demo (in the future, there will be a loose chain hobbling her legs, that one does not restrain her Walk ability enough to apply here). The Walk ability threshold being lower than the Reach ability (see above), when Sandy is fully taped up, she can't crawl when prone, and she can't stand up either. The only thing she can do is switch to ragdoll mode, or struggle out of her arms tape.

- Fix: Since 0.5.4, Sandy's thighs had too much angular drag, making them feel like they were moving through concrete, and more importantly, making them transfer their angular energy to the hips and to the torso too easily. They're back to normal now, only the shins were supposed to have that angular drag anyway.

- Fix: Several spots where some of the world was not rendered when the camera was moved there. This is due to the sector optimization (and is surely bound to happen again since it's a manual process, but at least one I have full control upon, unlike Unity's standard Umbra optimization where we only have like 3 sliders), but has no consequences on the gameplay, only on the rendering.

- Fix: The internal comm door is now locked after Sandy gets captured by Ignatus so you can't go back there after going through the Recreation deck (when you are supposed to go to the Med Bay, but the elevator gives you the opportunity to go anywhere at that point in the story). There was a risk of being spotted by Ignatus and captured again, but since there's no capture spot defined on that floor yet, he would have kept spotting you, capturing you, releasing you and looping all over again forever. Not fun.

- Fix: Sandy stops saying "press LB+Y to propel", since it is now just "Y" (although LB+Y still works too).

- Fix (I hope): Apparently, there were cases when we could see the last open container, for example Sandy's locker, just by opening the personal inventory with the Select button, regardless of the distance. I could never reproduce the bug because the container reference is cleared when we close the inventory, but just in case, it is now cleared when opening the inventory as well. No more storing panties into a container 20 m away and through several feet of steel walls.

- Fix: Now, the mouse cursor no longer shows up when opening the inventory, the dialogue or the elevator UI (but it still does when in the main menu, for convenience). This is temporary, of course, and will change again when keyboard+mouse support will be added, I just can't predict when. This should stop confusing the player when two buttons are selected at the same time, especially when trying to use the elevator.

- Fix: A couple voice files missing from the Voice folder.

 

0.5.4

- Add: Big optimizations to the rendering by cutting the different areas into "sectors", like some kind of coarse but fast occlusion. Each room is a different sector now. In practice, if you don't see a room (either because you're not looking at it, or it's too far, or its door is opaque and closed), that room is not rendered. And if an object is not inside the camera's frustum, it is not rendered either. It doesn't look like much, but this is a big change. The FPS gain is significant, it almost doubled on my machine.

- Add: You can now thrust along the Forward axis (where the hips are facing), the Up axis (along a line going from the hips to the head), the arms (push or pull) and the legs (push or pull). Check the "New to this?" tutorial entry for more details.

- Add: Press B to switch Up/Forward, or Arms push/pull, or Legs push/pull. The thrust factor is doubled for Up, Legs Push and Legs Pull (but not the focus cost.). For now, the screen only shows a temporary notification when you switch, because I don't really want to keep an icon always visible in a screen that is normally UI-less.

- Change: Thrusting and switching the thrust direction can only be done in zero-G or in micro-gravity, not if the gravity is enough for Sandy to stand up (0.1 G and up).

- Change: Propel and Thrust can now be done just by pressing Y, not necessarily with LB at the same time.

- Change: Pressing LS eliminates the drift, you no longer need to press LB at the same time (but it works too). 

- Change: When thrusting with Y, Sandy also counters the drift automatically, making her easier to control with this "thrust" feature.

- Change: The icons for grabbing and standing up now appear on-screen much faster, to allow for better reaction times.

- Change: The robot is now able to follow Sandy while using his vacuum gun.

- Change: Sandy's shins rotate more slowly and are more stable, hopefully they will be less annoying when the player moves her thighs, and it should be easier to struggle out from the legs tape.

- Change: By default (if no config file is found), the BGM volume is 25% and the Ambient volume is 50%, to avoid annoying new players.

- Improve (but not fixed yet): Better loading for the pivoting doors that can be engaged, such as hatches (not the metal doors in the maintenance corridors). Engage means "the door becomes kinematic, it won't move, when closed".

- Fix: Better (seamless) teleport when in ragdoll mode, and when in animated mode while carrying a character.

- Fix: A maintenance shaft's blocker was active when loading a game, which broke every save where Sandy was tucked inside a shaft. The Save 02 ("in shaft leading to DAL substation") file was probably impacted. The blocker is what prevents Sandy from going through a shaft when bound and in gravity.

- Fix: The robot did not correctly load his AI variables (e.g. the number of times he captured Sandy), so he forgot some data when loading a game.

- Fix: Finally the robot says "Join the Army they said" the way I wanted! Try to find the reference. Hehe.

 

0.5.3.3

- Add: Thrusting can now push Sandy either in the direction her hips are facing (default, like in 0.5.3), or in a direction going from her hips to her head (in other words, thrusting up), or in the direction the camera is looking. Up and Camera are more useful than Forward, in my opinion, because they allow you to push Sandy inside tight spaces, such as air ducts. Camera is clearly the easiest setting, but it requires you to move your camera all the time, which you may or may not like. I think the best one is "Up", because it is like making Sandy jump, or fly like Supergirl. It is also very reactive since all you have to do is pitch her torso forward or back, then press LB+Y to quickly change direction.

- Add: By pressing LB+LS, which makes Sandy tense while using the arms, if Sandy is not grabbing anything and her Thrust Factor is not zero, she progressively eliminates the drift from her trajectory, making her velocity vector match her thrust direction (forward, up or camera) over time. The acceleration is equal to the thrust factor. It won't multiply the thrust itself by two any longer, though, unlike in 0.5.3. This is also useful if you want to brake suddenly, just orient the girl (or your camera, depending on the option you chose) perpendicular to her trajectory and press LB+LS, this will quickly slow her down to a halt. If you want technical details, the drift is simply the projection of her trajectory onto a plane perpendicular to her thrust direction (Forward, Up or Camera), and Sandy eliminates it by adding a force in the opposite direction. In practice, this makes the blue target icon slide towards the desired thrust direction over time.


0.5.3.2

- Change: Now, Ignatus no longer applies only one restraint at a time, he applies as many restraints he needs, according to the number of times he captured Sandy. Just the arms the first time, then the legs, then he adds a gag, and finally he binds her in a hogtie if she keeps escaping. This also increases the security (or the tightness if you prefer) of the restraints he applies, or that are already on the girl. Devious!

- Known issue: Because of this change, Ignatus' comment about which restraint he will apply is, for now, always about the arms tape. Which may lead to saying something like "you have the right to remain silent, unless you want a gag, too", while applying a gag as well as other restraints.

- Fix to the fix: The fix in 0.5.3.1 about the mouse wheel while in the main menu broke stretching and folding the legs in ragdoll mode (in fact, it broke using the triggers most of the time). This fix to the fix still does not entirely satisfy me, so I might apply a fix to the fix to the fix later on.

 

0.5.3.1

- Fix: Using the mouse wheel in the main menu (for example when scrolling through the list of save games) would modify the camera zoom in-world.

- Fix: The robot would always say "If I catch you again, I'll bind you tighter" while depositing Sandy in the Observation Room in the Med Bay. This was due to a faulty parsing while my system was set to a non-US decimal format. That's a classic.

- Fix: In Animated mode, Sandy's handcuffs made her bend forward too much. This bug was introduced in 0.5.3, due to the fact that I changed the way restraints calculate the amount of torso bending (when Sandy's hands are bound behind her back, she bends her torso forward to compensate, but here she was bending it twice as much), in order to fully support stacked restraints. Full disclosure, later in the game -- but not in the demo -- Sandy is captured by a robot who restrains her arms while she is already wearing shackles.


0.5.3

- Add: Thrust. If you set the Thrust Factor to something greater than zero in the Gameplay settings, pressing LB+Y will thrust Sandy in the direction her hips are facing. Unlike "nudge", this not an impulse but an acceleration. Doing this costs focus, and stamina if you tense at the same time, which doubles the thrust force. You can't thrust if Sandy's focus is less than 25%. This is a cheat like Gecko Girl, but this should help new players find their bearings, while teaching them how to master the trajectory by looking at how the predictors react while thrusting.

Note: For now, the game does not have difficulty levels, but I would like to add some. A particular difficulty level could, for example, remove some handles and some cheats (like "Thrust" here). Until difficulty levels are implemented, I'm leaving the cheats available in the settings so people know what to expect. Also, at some point, later in the game, there will probably be a "space walk" sequence or two, with the girl having actual thrusters on her spacesuit to fly around the ship. I don't know yet how the commands will be laid out, but they will supersede this "thrust" command. So don't expect it to always remain the same.

- Add: A "New to this?" tutorial entry that sums up all the cheats and useful tricks, put practically at the top of the list so new players know what to do if they feel stuck.

- Change: Nudge, which was done with the "T" key on the keyboard before, is now done with LB+Y. This action pushes Sandy (with a little slap on the butt) towards the direction her hips are facing, but it works only if she's immobile or very, very slow. Very useful when you load a game and Sandy is stuck floating in the middle of a room without anything in range to push or grab.

- Change: Slow motion is now available at focus 25% to 100% instead of 50% to 100% only.

- Change: Sandy's door no longer auto-closes. New players get desperate when they finally reach the door and manage to push the button, then see the door close again because they weren't fast enough to cross it.

- Fix: NPCs sometimes had trouble teleporting when stuck while trying to go somewhere.

- Fix: The weird crackling sounds when loading a game are now removed. They were due to all the robots activating their vacuum guns at the same time. Yes, I know that the demo only features Ignatus, but he has a lot of brothers in the complete game and they all have their own vacuum gun.

- Fix: The big floodlights in the Recreation Deck now rotate properly and should no longer remain stuck.

- A lot of changes and fixes are also included but they are not relevant to the demo, as I spent most of my time working on the later parts and on the engine to make it support them.

- And as usual, I keep redoing voice lines that don't sound too good (in my opinion), but there are many of them so no point detailing them all here. But at least, DAL's "I'm... afraid..." now sounds a bit more like HAL 9000.


0.5.2

- Change: Now, the camera offset behaves exactly the same in Ragdoll mode as it does in Animated mode, i.e. hold LB pressed and use the directional pad (the "cross") to offset the camera up, down, left and right. Before this change, the camera would slide along the body, but it was confusing and not very useful. Note: Silly me, I forgot to update the journals to reflect this change. It will be done for the next version.

- Change: Gave the humanoid characters a little more inertia in animated mode (0.4s to reach full speed instead of the previous 0.25s, if you want to know everything).

- Fix: Gecko mode would make Sandy able to grab thin air on the Habitations floor (not on the other floors, apparently). This was due to a certain volume set to the wrong layer.

- Fix: We could get out of the bridge before the gravity was restored, then take an elevator to Habitations, which could break the flow of the game as the next trigger would never be activated. Fixed by locking the door until the gravity is restored.

- Fix: The shaft in Habitations (the first one we see when we get out of Sandy's room) was not notified when Sandy was bound and the gravity changed, so its blocker wasn't activated, resulting in Sandy still being able to jump through it. This shaft is special, it is (for now) the only one not present in one of the "always-loaded" scenes like the others, it is in the Habitations floor scene.

- Fix: The player could go down through the Communications Center shaft while still in bondage, while the scene with the crew and the mysterious voice was playing. Fixed now by locking the upper hatch until the gravity is off (which happens only after Sandy frees herself from her restraints).

- Fix: The chairs in the mass room on the Habitations floor were static, but not their colliders. As a result, you could push them but you couldn't see it. I'm sure there are other pieces of furniture in that case.

- Fix: Concave mesh colliders such as the soccer goals on the Recreation Deck prevented from showing the grab target for the hands in Ragdoll mode, so we couldn't see if we could grab the net or not (we could, the nets are always grabbable).

- Fix: Since struggling started demanding effort (hence stamina cost and body temperature gain, which eventually results in sweat), simply moving in Ragdoll mode in gravity was very taxing, making Sandy's skin red very quickly and making her sweat for no real reason. Now it is much more reasonable.

 

0.5.1

- Add: Sandy now mentions the "Propel" feature when she explains the basics, right after waking up in her room after starting a new game.

- Change: The strength factor in zero-G is now 50% by default (i.e. if it was never changed by the player) instead of 100%. This will make Sandy react more slowly but should be easier for new players. If you already modified one of the Controls settings, this won't have any effect on your game.

- Change: The strength factor for the arms follows the same principle, 50% by default for new players.

- Change: Now, activating the arms in ragdoll mode should no longer pull Sandy too hard to whatever she is grabbing. She will still go into her "boxer stance", but much more slowly than before, unless you move her arms, even a little. For example by pushing the left stick up slightly.

- Change: When a word is unknown among whatever a character is saying, their lips (or LED or whatever) no longer remain still, the character will try to pronounce a word that looks "close" to it. This goes for numbers, too. For example, since not all the numbers are defined in the game's CMU dictionary, Sandy used to simply keep her mouth shut while pronouncing the last part of "Sunday, September 29th, 2019", now she moves her lips on "29th" and on "2019".

- Fix: The colliders for the shower/toilet units in the Observation and Clean rooms are concave mesh, but were made with missing faces (not my doing, they were sold like this). As a result, they were likely to "suck" Sandy in or to get her stuck. The soccer goals on the Recreation Deck had the same issue, hopefully it is resolved as well. Some assets are sold with really bad colliders, let me tell you that !

- Fix: Those shower/toilet units had their own "open/close" scripts with the "press 'E' to activate" UI prompt. This is deactivated for now, until I add the proper "open" and "close" operations (as my engine handles them), like in all the other doors, in the near future.

 

0.5

- Add: Unlike v0.4.1 and before, v0.5 onward ends at the end of the Med Bay, after you successfully evade Ignatus and get out through the maintenance shaft. This is actually the state I wanted to release the demo in, initially, but I wanted to demonstrate the core mechanics first, before showing the robot's AI at work. It wasn't ready back then anyway. Now Ignatus patrols, searches rooms, puts away crates that happen to not be where they are supposed to be (distracting him in the process, hint hint), captures Sandy, strips her, binds her increasingly tighter, and dumps her in the observation room where he expects her to stay, and to remain bound. If he spots her free anywhere, he will try to capture her again.

- Add: Ways to lower the integrity of some restraints (tape only for now) by rubbing them against something sharp. In the current state of the game, the only sharp objects are the handles of the fire extinguishers. Try to make the weak spots of the restraints touch the handle repeatedly, and you'll see the blue bar of the restraint decrease until it reaches 0, at which point it is destroyed. To see the two bars of a restraint (green for security, blue for integrity), you have to start struggling in it by selecting the "start struggling" operation with the action wheel. It's easier if you make the restraint the "quick item" first, by pressing RS after selecting it, in the inventory. Then, just press and hold X (with LB pressed too if in ragdoll mode) to bring up its action wheel. Or press and hold A (once again with LB) to execute its default action, which is most likely "start struggling".

- Add: When carried and you feel the robot is not carrying Sandy the proper way (this is a physics game, so it happens pretty often), press F to force the robot to extend his arms in a T-pose for a second, to leave Sandy time to get into position. This does not always fixes it, but it helps. "F" stands for "Fix Carry", just like "R" stands for "Repair Ragdoll".

- Add: Deadzone settings, one per stick. They are 0% by default. You'll find them in the Controls settings.

- Change: Sandy's tape is harder to struggle out from the lower its security gets (the green bar), and it won't disclose the middle steps in its sequence anymore. This is because the more you struggle, the more the tape scrunches and folds, so the trickier it gets to get out from. Fortunately for you, failing a sequence won't tighten it again anymore !

- Change: Struggling from the ballgag now requires to execute arms movements, exactly like when struggling from arms restraints. This will change in the future but for now I only have arms and legs movements anyway. The same goes for the hogtie. I know it's not really a "change" for you since there was no ballgag nor hogtie prior to this version (since they are introduced only in the med bay scene which was not part of the demo before), but I thought it was worth mentioning.

- Change: The hatches can now be opened by putting the hands close enough to their lateral handles (actually, between a handle and the hatch itself), no longer by looking at the hinge.

- Temporary change: Sandy interrupts conversations again when she hits her head... I'm still trying to figure out a way to make her interrupt only non-important conversations that way.

- Fix: When executing an operation during a conversation, a character would stop looking at the other actor, and look straight ahead instead.

- Fix: When unconscious, don't show the predictors.

- Known issue: When loading a game, two unpleasant sounds occur, like crackling or something like that. I don't know what causes this but this is due to a recent change. I'll keep investigating.

- Known issue: When Ignatus spots Sandy while she's trying to hide in a cage (but not completely hidden or he wouldn't spot her in the first place), he will try to reach her... by going upstairs. I know why he does that, but I don't know yet how to prevent him. This is due to having a hard surface under Sandy, very close to the ceiling, making the robot think that the closest point on the navmesh is the floor upstairs. It also happens sometimes with crates that are right under the ceiling, stuck to a wall with a protrusion underneath.

- Known issue: When carrying something, Ignatus' footsteps seem doubled. No clue what causes it yet.

 

0.4.1

- Add: An option to activate/deactivate vertical synchronization (v-sync) in the Graphics options. 0 means off, which may create tearing in the rendering, 1 to 4 is on.

- Add: Two sliders to specify a factor (between 0.1 and 1, meaning 10% to 100%) for Sandy's strength in ragdoll mode. One factor is for 0G, the other for 1G. Any other gravity value interpolates between the two. Default is both 1. If you feel Sandy is too fast when you move the sticks, you may want to lower the 0G factor first, try something between 0.4 and 0.7, maybe. Attention, this is different from the power curves. Those factors really limit Sandy's strength in all her movements.

- Add: An option for the crosshair to be always visible, always hidden, or visible only while pressing RB.

- Change: In animated mode, when restrained and in gravity, Sandy will no longer be willing to jump up or down through the shafts. There's an invisible wall active in that specific case. Not a really good solution, I'll add more to this later, but for now it is necessary to simply prevent Sandy from going down a shaft while in handcuffs, and not be able to call an elevator to go back up. Normally, this case does not happen in the demo, but it happens later in the game.

- Change: Now the names of the voices in the Voice folder match the names of the characters, no longer the names of the voice "actors" (for example, "Panam" becomes "Sandy", "Vfemale" becomes "Player" etc). That doesn't change anything for the player but it makes things much clearer now.

- Change: Redone a few voice lines to make them sound more natural. And Virginia has changed voice, again. This time she should sound just fine. After 4 tries.

- Change: No longer include the full path name of a save game file when we load a game, for it contains the user's name on their machine. Just show the save game file name only to avoid privacy issues. That information appeared only in the log file.

- Change: When Sandy is unconscious, any conversation she is in will keep going, it will no longer be interrupted for now because some conversations are important and trigger events in the world.

- Change: No longer interrupt a conversation when hitting something or when trying to open a locked door, those conversations are unimportant anyway.

- Change: The delay between two dialogue lines now depends on the duration of the first, to make the pacing sound more natural.

- Change: The invisible wall spawned during the conversation between Sandy and Ignatus in the maintenance room, after dumping her there, now has less range to let the player move around more.

- Fix: It was possible to remove Sandy's tape in the last scene just by using the appropriate action in the action wheel. This was due to a recent change in the way restraints are handled. Now, we can no longer simply "unwear" the tape, the player has to choose "loosen", which loosens the tape to the max, which makes it self-destruct (because it is tape, once removed, it's useless, but not all restraints are like that). Other restraints such as handcuffs can also be loosened, but their minimum security (the green bar when you struggle) can never go down to zero, meaning you can't get out that way, they need a key. But loosening a restraint means increasing some abilities such as "reach". These mechanics are not really important for the demo anyway.

- Fix: It was possible to brick the game by struggling out of the tape before the scene with the crew ended. Doing so would roll back the quest stage to an earlier number and prevent the player from going forward. The fix, for now, is to prevent from struggling from anything until the crew has stopped talking. Not very elegant, but it works well. This is the same idea as the one that prevents the player from dropping the key to Sandy's handcuffs before freeing her. I had to do that because the key is quite small and difficult to see, and the player could lose it easily. Worse, being in cuffs, Sandy would have trouble picking it up from the ground. It's possible, but a bit acrobatic.

- Fix: When Sandy is not free to move (blocked by a conversation or doing an action that requires her to remain in place), no longer allow her to change control mode (ragdoll to animated and back) or stance (stand, crouch, prone).



0.4.0.2 (hotfix)

- Change: Sandy's physical feet are now a bit longer, a bit wider, and moved to the front so hopefully she will stop sticking her heels in every handle she finds.

- Fix: The game failed to detect when Sandy removed her leg tape restraint in the Communications Center, so it failed to advance on the dialogue, breaking the game. This bug was introduced in v0.4.

 

0.4.0.1 (hotfix)

- Fix: When Sandy got rid of her handcuffs and got dressed, the dialogue with DAL would immediately start without waiting for her to go back to her room. And after the dialogue ended, undressing and dressing again would restart the dialogue all over again (and it's a long one).

- Known issue: For now, the dialogue starts when Sandy is decent and free, and has entered her room once after getting free. If she walks out of her room to dress in the corridor, the dialogue will start. To avoid this, don't walk out of Sandy's room after dressing her.


0.4

- Add: Two new videos in the "How to keep things simple" journal entry, to demonstrate making Sandy's body stiff and her legs aligned by staying in arms mode, and how to propel her precisely with LB+Y, by aiming at a handle with the crosshair.

- Change: Replace all the xVASynth voices in the demo with new, more natural ones. It is likely that I've forgotten some, it will be fixed in the long run. I hope you'll enjoy Sandy's new voice and her cute British accent !

- Change: Replace all the xVASynth lip sync files with a new format created by a Speech-To-Text tool. Please note that the lips won't move for words that are not recognized, but that's something that will be fixed in the long run too. Full disclosure, I use a copy of the Carnegie Mellon University's Phoneme Dictionary (it's a big text file with over 134000 words in it, as well as their translations into phonemes), that I add my own words to ("Diomeda", "Curnow"...). It just so happens that since it is an American dictionary, it contains only American-spelled words. However, the Speech-To-Text tool transcribes in British English. For example, it spells "motorised" with an "S" but that word was not initially in the CMU, it was spelled "motorized". This resulted in an unrecognized word, hence the lips staying closed. There are a few cases like that, I'm trying to spot them all.

- Change: Do not hide the interaction prompt while in a conversation anymore, since the button to expedite (skip) a dialogue line no longer conflicts with the button to execute an interaction.

- Change: Don't prevent expediting dialogue lines when grabbing something anymore, for the same reason as above.

- Change: When a character is stuck while trying to walk somewhere, teleport them after a few seconds, like in Skyrim, don't let them walk in place forever.

- Change: Improved the lighting in the scenes, removed most of the dynamic lights and replaced them with a few ambient lights and a few ambient volumes. This makes the scenes look more realistic with a more diffuse lighting and less light bleeding through walls, and it also speeds up the rendering because before this change, every single piece of wall had its own light (without real-time shadows, but still).

- Change: Decouple the audio clip and its lip sync file, so if a clip is missing, a character can still move their lips, even if no sound is heard.

- Change: The "arms strength factor" slider in the options can now go up to 2. Its default is still 1, and it should remain 1, but I really can't make up my mind about this. Making Sandy's arms stronger does have its advantages, but makes the game more difficult. Making them weaker makes her more precise but also slower. It's your choice. Personally, I like 0.6. It's gentle but strong enough, and won't shake Sandy all over the place when activating arms mode.

- Change: The crosshair is now bigger and easier to read, with a shadow in case it is against a bright backdrop.

- Change: Decreased the Focus consumption when slowing the time down, since it now stops when it reaches 50% of the max value.

- Change: Slowed down the crouch/stand, crouch/prone and prone/stand transition animations to make Sandy look more human when she does those moves.

- Change: Made Sandy a little more resilient to collisions. She should no longer hit her head all the time when rolling over the floor now, and it should be safer for her to fly in zero-G.

- Fix: Several issues with jumping, falling and landing. Hopefully the character should no longer remain stuck in the "falling" animation when touching the ground too gently. Also, she can now show that she's landing hard if she's falling from too high.

- Fix: Chairs and monitors in DAL's core should not be static.

- Fix: Decals (HDRP projectors to be exact) were not present in the build due to a bug in Unity. In the demo, the only difference would be Ignatus' standby button symbol being visible now. There are a couple more decals later in the game but the demo doesn't include them.

- Fix: The last viseme in a dialogue line was never played (e.g. when Sandy ended her line with "away", you would see her lips go to the "W" shape, then go back to the neutral shape without going to the "EH" shape first). It was not an obvious one, as it showed only with certain dialogue lines.

- Fix: The girl would not properly walk "up" stairs when the gravity is inverted. I'm not sure there is any example of this in the demo, but there are such stairs in the Med Bay later. They look like the one in DAL's core, and you can actually walk under them when the gravity is upside down.


0.3.14.3

- Add: A new switch in the Sounds options to keep Sandy from complaining when she hits something. She just grunts but she won't say anything if the switch is off. It does interrupt conversations, though, if I find a way to prevent that in the future, I will.

- Add: A slider to factor the strength of Sandy's arms, in case you feel they are too fast and strong. You'll find it in the Controls options.

- Improved: Gave a bit more volume to the humans' voices, because robots are louder and the background music did not duck Sandy's voice enough, making her difficult to hear with a loud BGM.

- Improved: Sandy's back detector has a little more range, making it easier to stand up while sitting with the back against a wall.

- Improved: The navigation in the Options menu should be better and more intuitive now. Unity's default navigation system is not up to the task, it seems.

- Improved: In the options menu, pressing the Y button (or triangle on PS) now applies the settings of the page, while pressing X (or square on PS) now reverts them. Also, added icons on those buttons as a reminder. Attention, to be consistent with the layout on the controller and with the modal window (the one that asks you to confirm if you want to quit), the Apply and Revert buttons were swapped on the screen, Revert is now on the left and Apply on the right.

- Improved: Removed most of the gyro alarm lights in the Habitations corridor and all those in the maintenance corridor, added red emergency lights in the maintenance corridor, increased the range of the ones in the Habitations corridor, and added red lights in DAL's core substation. That way, you won't have to navigate in the dark anymore. It is true that forcing you to navigate in zero-G without much practice on the complex controls, with a loud alarm blaring in your ears while in complete darkness in an environment you're not familiar with, could have been seen as borderline sadistic. I'm not a sadist. Promised.

- Improved: Halved the volume of the alarm sound, as it could become annoying after a while.

- Improved: Now that "propel" has been added, it adds an opposite force on whatever we propel from, provided it is physical (like a crate or a barrel) rather than static (like a wall). Please note that, for the time being, the propel force is the same regardless of the mass of what you propel Sandy from. In the future, I'd like to replace this simple force with a spring, so the mass of both bodies would be taken into account. But that would make the propel feature less efficient so I'm not doing this yet.

- Change: The strength of Sandy's arms has been halved, to return to what it was in 0.3.14.1 and below. It was doubled in the last version but that was definitely too hard, making it difficult to push Sandy from a wall with her hands.

- Change: To expedite a dialogue line (or "skip" as it is also called), the command is now RB+A, instead of just the A button, to avoid making mistakes when wanting to grab or operate something while a conversation is underway.

- Change: Now, the thighs won't push the body unless you push or pull the left stick more than halfway. It used to be 95% of the way, but halfway seems to feel better. That's not to say it won't change again, or that I won't add a slider in the options if I can't make up my mind on this matter.

- Fix: Workers' feet bent in bizarre ways when walking while carrying Sandy.

- Fix: The "Voices volume" slider in the options did nothing. In particular, it did not control the volume of the voices. Which was a shame, considering it is supposed to be its purpose.

- Fix: We couldn't run in diagonal with a non-linear animated input power curve.

- Fix: Sandy's "arch back" strength did not take the strength factor (that depends on the gravity) into account, so it made her flip back too hard. I wish it was stronger, but that would make some unrealistic movements possible, such as flipping back from laying on the belly without any support, in full gravity.

 

0.3.14.2

- Add: Propel Sandy by pressing LB+Y while grabbing something in Ragdoll Mode. This will push her hips towards whatever your camera is focused on (there won't be a parallax error as it checks the point it is looking at, not its direction), with a moderate force so pushing manually is still stronger, but propelling is very precise. It also makes her release whatever she's grabbing at the same time. The picture of the "Ragdoll with Left Bumper" controls has been updated to reflect this, as well as a new journal entry in the tutorials named "How to keep it simple" explaining it.

- Add: Option to change the grab radius (default is 0.2 m, which is also the minimum, while the maximum is 0.5 m) to let Sandy grab something that is farther from her hand. Careful, the bigger the range, the less precise the grab because the hand detectors might detect something else than what you want !

- Add: A few lights in the Habitations maintenance corridor, as well as in DAL's substation. Those rooms were too dark. It was the goal at first, knowing that Sandy's body has low lights around her to illuminate what's immediately around her, but players found it too hard and frustrating to fly without seeing anything. Besides, in a much later segment of the game (not included in the demo), the power goes out again, and this time we see a lot better because there are red lights everywhere, so there's no reason to keep the first areas so dark anymore.

- Improved: When in arms mode, Sandy stiffens even more, to the point that you can literally play with the Left Bumper pressed at all times if you don't want to be bothered with moving her legs at all. She will remain stiff until you release the bumper, and you can just rotate her with both sticks, as well as move her arms up and down. Much easier that way. The "How to keep it simple" journal entry explains that as well (in the tutorials).

- Improved: Sandy's back is now much stronger than before (almost twice as strong). But still not strong enough to lift herself from the ground, while facing down, without her hands and under full gravity ! But still strong enough to be able to pitch back when in low or zero gravity, making that move finally useful.

- Improved: Sandy's arms are now twice as strong as before. Careful, she can push herself from walls much more firmly now, going faster than before.

 

0.3.14.1

- Fix: Horizontal selectors in the UI did not use the UI audio channel so they stayed as loud as they could regardless of the UI volume setting.

- Fix: Could interrupt the conversation in the Communications Center by touching the button of a door that is supposed to remain locked anyway.

- Fix: In the Communications Center, one of the floors did not have a collider and Sandy could fall through it, all the way down to DAL's core 120 m below (that's a long way down).

- Fix: When bound in tape, Sandy gave the player a choice but nothing came out afterwards (I forgot to re-parse the dialogue there, my bad).

- Known issue: In the Communications Center, after the call on the speaker and before the robot meets Sandy, it is possible to move around, and possibly to break the flow by going too far, for example by going to places the robot can't reach.


0.3.14

Initial release




Thursday, November 23, 2023

Flight of the Swallow (teasing)

Hi !

It's been so long since I've posted here ! I bet you thought I had left Second Life and stopped producing stuff at all, right ? Well, not quite. But it is true that I did not create any new SL product lately, though I kept providing customer care, naturally.

I've often been asked what I am currently working on, with the hope that it would be a new SL product. And I'm flattered, really. But I must admit, after Xulabarthath, I think I pretty much reached the limit in what I can do in SL, at least for the time being. So... I shifted my attention towards something else entirely.

I spent the last two years and a half making a videogame ! An adult game, even. Well, it's a regular game with some adult stuff in it. More precisely, BDSM stuff in it. It's an erotic game, but not a porn game.

 

The name of the game is "Flight of the Swallow". It takes place in January 2080, aboard the "Diomeda", a massive research ship orbiting around the planet "Lagune", in the q1 Eridani solar system.

You play the role of Sandra Curnow, the chief technician aboard the ship.


The girl is a magnet for trouble, and you'll see just how much trouble she can get in when she wakes up the first day, as you start playing.


In fact, take a look at the first five minutes of gameplay to get an idea of what this game is about. Please forgive the poor quality of the video, I had to reduce it to be accepted by Blogger. You can't post videos bigger than 100 MB here.


Note : Sandy says "no" when the player asks about a vector, yet you can see the on-screen "predictors" that show Sandy's trajectory. This is because I wrote that dialogue before creating the predictors, so I'll have to change what she says later.

 

Since she is inside a ship in orbit, Sandy is floating in zero-G during a good part of the game. Which means that you control her body physically. You need a controller (Xbox or PS4/5) for that, it isn't fit for playing with the keyboard and mouse yet. This will probably come down the road, though.

Here is another short example of gameplay, after she gets free from her cuffs and finds her uniform to wear.


But the Diomeda is a spaceship, not a space station. It has thrusters that can deliver up to 1.2 G of acceleration. So when they're firing, Sandy can walk normally, as if she were on Earth.


Those two controls schemes (regular under gravity, physical in zero-G and in gravity alike) are integrated seamlessly, you can switch from one to the other when able. You can probably see where this is going.


If you've played Alex8778's "Escape: Forced Overtime" or "Bondage Nightmare", then you will notice a few similarities. Initially, my idea for learning Unity was to create a prototype that would use the same controls, making the player move a physical female character in bondage. That was during the first half of 2021. You can see how it evolved since then, but this is where the idea came from initially.


There are other inspirations that are much more obvious. Can you spot them ?


 

(You have to be a hardcore fan to recognize this one)


But at this point, you probably guessed.

 

All these pictures were taken in game, there is no photo mode (yet), so I used the regular camera to offset and zoom until I got the frame I wanted. In this game, camera skills are paramount, as they are what allows you to have a good idea of the distances between Sandy and whatever it is you want her to grab.


The Diomeda is designed with zero-G and gravity in mind. As a result, it is built like the spaceships in the The Expanse series, where ships are like rockets instead of ships that move on water. The bow is at the top, the stern is at the bottom, and the ship flies upwards, not forward. And the game strives to remain as close to realism as possible. No breaking the speed of light, Newtonian physics all the way, no invisible thrusters, but Sandy can rotate on her own even without support, as there wouldn't be much of a game if she couldn't.

This game is still very much a work in a progress. At first, I just wanted to learn to use Unity, and one thing leading to another... now I'm working on a full fledged project. At this time, you could say it is no longer a prototype, but still in the pre-alpha phase. Nowhere near release.

The story is divided in days, and I have written and implemented day one, which represents several hours of content (if I speedrun it, it takes me 5 to 6 hours to complete it, and that's just the first day). Most of the locations are not furnished completely, or at all for some of them, as I prefer to write the story first.

Full disclosure, the game itself (in the state it is currently in, which is version 0.3.8 at the time of this writing) took 1 year to make. That includes the characters, the items, the story, the dialogues and the locations. But it took 1 year and a half to create the underlying engine, the part that handles the mechanics. Ragdoll controls, zero-G, normal controls (Sandy can walk like everyone else when there is enough gravity), conversations, voices, audio system, AI, inventory and items, physical elevators, physical doors, bondage... pretty much everything is made in-house.

Speaking of the voices, the game won't be provided with them directly, as they are made with xVASynth so I am not allowed to make them part of a commercial product. They will be provided separately, for free, and meant to be installed pretty much like a mod. The game will function with or without them. That's way down the road anyway, as soon as I provide a demo of the game, I will probably include the voices, since the demo will be free. At the time of this writing, there are over 2000 voice files, and I tweaked every single one of them manually to sound as natural and as little robotic as possible.

I have a lot to say about the voices, but the most important thing I want to point out is that I do not want to show disrespect to the original voice actors and actresses whose voices are imitated here (emphasis on imitated, I do not steal their voices, and I do not pretend they voiced the characters themselves, they have nothing to do with this game). It's machine voicing anyway, no doubt that real voice actors would do much better and for a fraction of the effort it required of me. And I'd love to have the original actors voice my characters ! I just don't know if the game would be profitable if they did.

I have no idea when the game itself will be ready for release, let alone finished. It will be in a couple years, I suppose. I'm working on it full time, thanks to the money I earn in SL, so if you bought products from me at some point, I can do this partly thanks to you !

This is why I don't have a Patreon page or anything like that. I think that Patreon is a flawed system that doesn't entice a dev to finish their project, and when the project is actually released, most of the money was already earned. But if you do wish to support me, don't hesitate to buy my products ! That way you actually buy something that you can use right now, instead of the promise of a project that may or may not see the light of day, years later.

I would like to release a demo soon, hopefully before Christmas. But I'm not sure if I'm ready for the flurry of comments and suggestions I'll get once it is available, yet, I'm still pretty shy on that matter. This game requires a lot of work, and there's still a lot to do. In fact, I have never worked so hard in my life, and that's coming from someone who worked as an engineer for the military for several years. Imagine working for 12 hours a day, average, sometimes doing 30-day weeks. That's what making a video game entails.


Hope you enjoyed the little teasing ! I could not resist any longer the urge to tell you what I'm working on.


Have fun !

Marine


PS : Thank you to Danna Pearl, Tania Loon, Angelina Sinclair and Stephanie Mapple for helping me by testing the game and giving me suggestions ! Especially Danna and Tania who pretty much watched the game grow over the years and who kept their mouths shut about it :)

 

PS 2 : I've been asked if I was leaving SL, and if I stopped making products. It's a no to both questions. I am not going anywhere, I'm still providing customer service, and to be honest, I can't wait to get back to working on SL products (new and existing), this will feel like vacations to me. Besides, PBR is coming to SL soon so I will work on the RLV and on some of my products soon anyway. So no worries !