Improved Character Model and Speech Bubbles

Okay this is a fairly small update, but I just wanted to demonstrate some things I’ve been working on. I’ve made some effort to address some of the concerns people raised regarding the quality of the character model, and while it’s not a complete overhaul, I’m hoping it is a significant improvement now. As well as tweaks to the body and face, she is also using a brand new shader which features artist-defined warped half-lambert shading, subtle rim-highlights, view-dependant outlines which resize depending on camera distance, and material-specific colourized shadow-mapping. My hope is that this shader will help the characters look better in more varied lighting conditions. I have also fixed some bugs with the morphing system I showed many months back connected with using meshes with UV seams, which actually went unnoticed before since the test models I was using all had separated UV faces. You may notice the blinking which I feel goes a long way to improving the character’s sense of believability in the world.

screenshot_0104.png

I am also showing off some new speech bubbles which will allow characters to talk and interact outside of the visual novel segments. My plan for this is to create a whole dynamic rule/response which will choose appropriate phrases depending on the state of the character, player, and the world.

I also added MSAA-support to the engine, probably the best form of anti-aliasing albeit with a significant performance cost, but I will likely be using this in all future forms of media released for the game from now on, and it will be available to anyone with a machine which can handle it. It’s actually not as big of a performance hog as you might expect, since most of the game’s performance problems are currently CPU-bound rather than GPU-bound.

 

I probably would have had more to show, but unfortunately during my work on this update, I suffered a very severe crash which resulted in me loosing several days worth of work. I keep very frequent backups and utilise revision control, but I still lost my uncommitted changes as a result of this crash, which slowed me down and actually burnt me out quite a bit having to rewrite code I had already written. I will be sure to take more meticulous precautions in future in order to prevent any similar issues from occurring.

I’m at least back on track now so expect something more interesting coming soon.

Basic AI Navigation and Pathfinding

Here’s another short update and video. I’ve been experimenting with basic AI navmesh pathfinding and navigation. For the NPCs, I’ve refactored the player’s movement code in such a way that it can be used by NPCs too, and while I was doing this, I also redid the movement code yet again to solve most of the physics-related glitches people had reported in the last playable build. When I release the next build, movement should be more stable and graceful. I’m going to focus mostly on polish and bugfixing, and then I may release another build shortly after featuring the AI character. Although I’ve gotten a lot of feedback on the character, I haven’t had time to do any further revisions just yet, but I plan to improve it in the near future. There’s also a feature which I think people might actually find really interesting which I may consider implementing soon, but I’m keeping it a secret for the time being since I don’t want to implicitly promise one way or another as to whether it’s actually going to be implemented, but I get the feeling it’s something people might find a lot of fun, especially with the project in such an early state.

Regarding, the translations, the response to this has been incredibly positive. I’ve been receiving early translations in Polish, French, Russian, Germany, Spanish, Italian, and Swedish. I would like to take this opportunity to thank everyone who has contributed translations so far. This is still something of an experiment, but so far, I think it is going very well. Galatea is still a very small project and this blog does not get much traffic, but it appears that for the traffic it does get, it seems to have a very international audience, so allowing even these early builds of the game to be enjoyed by people in their native languages can only be a good thing. I hope people will continue to send me further translations as the game develops.

First Footage of Original Character Ingame.

Sorry for the delay with this update, I ran into a lot of issues along the way, but I’m happy that I finally feel ready to share what I’ve been working on. The majority of my time has been spent on completing the character model I’ve been working on, rigging her, animating her, and finally getting her into the game. Getting this character into the game has raised some further issues though. Continuing what I mentioned a while back, performance regarding skeletally animated character is particularly poor in the engine right now, but I’m hoping this will be improved soon, and there are also various parts of the import process concerning animated character which are downright broken and will need to be addressed. Still, at least now you can see her in motion, and this should give you some insight into whats coming in the next major update.screenshot_0053A lot of the delays on this character came from feedback I got from a select few people who suggested a lot of improvements. I’m still not entirely happy with it, and will likely continue to improve it further, but I would really appreciate your feedback on seeing this character since this is actually my first attempt at character modelling, rigging, and animating. I am aware of some issues already like a slightly unconvincing run animation and the fact that the hair intersects with the body, but this will hopefully be solved with the introduction of physics simulations for the hair model.

Incidentally, if you’re an artist who thinks they can step in and improve this character, either via modelling, animation, or texturing, please consider contacting me.

Quick Localization-related ammendment

A few people have contacted me about wanting to translate Galatea into their own language. While there isn’t all that much to translate, I’ve decided to host the strings .csv file on a Github repository so people, if they want, can contribute translations of Galatea into their own language and I’ll include them whenever I update the game. Now, this won’t encompass all the strings in the game, and there are two types of strings which would both need to be translated for a full localization: generic system strings contained in csv files, and visual novel scripts written in a custom scripting language. While I will start to include some of script files, there is likely to be a LOT of narrative planned for the final game, and I don’t want to make everything public for the sake of story spoilers, and would generally prefer to work on this aspect with more professional localization people/teams. However, if you just want to have the base game available into your own language, feel free to translate what I have made available. The engine is unicode, so it should be possible to translate into any language, but there might still be some font issues related to CJK and right-to-left languages which I don’t yet know about.

Now, about git. I understand that git is very complicated for non-programmers (and even quite a few programmers), but since the strings in the game will be subject to very frequent change, I want a system which instantly allows me to update and revise data in the same way I work on code. This of course means that translations will become obsolete very quickly, so you will be responsible for making sure your translation remains in sync with the rest of the game. If git is too complicated for you to deal with but you still want to translate the game, just click the ‘Download Zip’ button on the Github page, and send me the updated file via email and I’ll commit them for you. Either way, you can find the first .csv file in the game here (https://github.com/SaracenOne/galatea_localizations).

First Public Test Build Release

galatea_schoolDownload Page

Okay, so I’m putting out the first public test build of the game today. As stated before, this release is still very light on overall content, not really containing any actual gameplay or characters, but will allow you to explore part of the environment due to appear in the full game (which has unfortunately also had to be scaled back for now due to performance reasons cited in earlier posts). This should at least reflect some aspect of the game, since exploring 3D environments will be a part of it, and this is something of rarity for this particular genre. Honestly though, I didn’t really want to put out anything playable at this stage, but a lot of people had requested it and are likely eager to see some of the stuff being worked on, so here it is as promised.

Now, a few facts about this release: first of all, it will likely have bugs, it’s built from a custom fork of the unstable development branch of the Godot game engine I’m using, and I’m already aware of a couple of bugs which have not yet been fixed in this release due to the seemingly random nature of their occurance.

Secondly, it’s more or less what you see is what you get; this release is simply to show off an in-progress look at the school environment and nothing more. Again, some people might be let down here, since there is no real gameplay and there are no characters as of yet. I did manage to get the phone camera to work as some of you may have already seen, so there’s that I guess. However, I’ve already teased at a character model I’ve been working on, and finishing and integrating her will be the primary focus for the next major release, which should be a LOT more interesting than this one. I’ve also exchanged some emails with the lead programmer and maintainer of the engine I’m using, and said he will fix support for GPU skinning in the next few weeks, which should help performance when I introduce characters in the next major release. I will also be merging some of my own code in the mainline.

A lot of people on the YouTube channel commented that they felt the default FOV was too wide. While I personally think a 90 FOV is a good default value (I think most modern games have what essentially amounts to glorified tunnel vision), I’ve lowered it down to 80. However, you can still configure it yourself by changing it in engine.cfg file distributed with the game with a text editor, or by using the console command ‘set_fov’. You can also change other configurations in the engine.cfg file, including resolution and key bindings. The lighting is also a lot better this time, although still not ideal.

Finally, in order to justify the existance of this release somewhat, I’ve hidden a very small secret/easter egg in this build. See if you can find it.

Enjoy!

Progress Report – School, Interactive Objects, Gamepads, and Camera Phone

Hello, just a short update. I am still going to release a playable build, and if everything goes according to plan with no hiccups, it should be out within the next couple of days to a week. I just want to try to add some more models to the school and missing collision hulls, as well as adding more interactive hotspots to the environment.

For now, here’s a video showing off one of the new features I worked on recently. I redid the raytracing code for the phone and added support for the phone’s camera. I’ve also got some more really nice new sketches contributed by Akainai this time showing off close-up head shots and emotions of some of the cast. These will actually prove very useful in improving the quality of the 3D model’s head.

Delinquent Girl

Other things I’ve been working on recently are, as I mentioned in my last post, adding fixes and improvements to the offline light baker, and adding the framework for interactive objects, so far including doors and areas in the environment you can examine which is hooked directly into the visual novel engine giving us a framework very much like that of a western point and click adventure game. The game also now features working passage of time, although so far this only effect this has is that both the ingame clocks and the digital clock on your phone will accurately tell the time now. So far, I’m considering having passage of time be a 1:1 match for passage of time in the real world, since the way the gameflow is structured is that certain activities, studying, attending class, ect., will make a predetermined amount of time pass automatically. Furthermore, I’ve started adding in various sound effects and redoing a lot of the code for handling 2D screen elements as well as lots of other minor bugfixes and improvements. One of my contributors, Arno, also recently touched up a bunch of the early models I created with brand new texturing which I think looks a lot better now.

Gothic Girl

Another feature I’ve been working on which unfortunately won’t be ready for the release build is a brand new driver interface for gamepads on the Windows version. To explain why this driver is necessary, I should first explain the problem with gamepads on Windows. A question, have you ever noticed that most modern games will mostly work automatically, plug ‘n’ play basically, with gamepads, but only Xbox 360 gamepads? If you try to put in another pad, they usually won’t be recognised, and you’ll be forced to use a third-party solution to fool the game into thinking it’s an Xbox controller. This is because there are two main APIs you can use for pads in Windows nowadays, DirectInput and XInput. DirectInput is the older API which works with pretty much any pad out there, including more unconventional ones like steering wheels and flight sticks, however there is a slight problem in that doesn’t read Xbox 360 pads correctly. The specific issues are that it treats the trigger shoulder buttons as a single axis and I don’t think it recognises the dpad. I’m not sure why this is, but some have speculated this was deliberately done by Microsoft to uproot competition in the gamepad market, and that’s where XInput comes in. XInput supports Xbox controller just fine, but the problem is that is ALL it supports; it has no support for any other type of gamepad. Game developers will usually pick just one, and they’ll usually pick XInput since it’s easier to use and provides a more unified approach to gamepad support (by unified, assuming everyone has an Xbox controller). However, I’m not accepting that, and my driver is a hybrid of XInput and DirectInput, meaning it should correctly recognise pretty much any controller you use. I also came across this really cool little extension written for the Godot engine called SUTJoystick which essentially provides a system for automated keybinding based on the gamepad’s GUID (or rather an MD5 hash serving the same function of the controller’s name since the original driver was actually based on a deprecated API called the Microsoft Multimedia Joystick API which does not expose device GUIDs to my knowledge). By using such a library, we can construct a database of devices with correct button mappings which can be distributed with the game and updated as needed, essentially making a wide variety of gamepad completely functional with no prior configuration required.

Tomboy Girl

The reason this won’t be ready for the first public build is that I still need to work out some kinks in the driver as well as build a whole new control scheme specifically designed for a gamepad. It’s also is quite hard to test the full functionality of the feature since right now I only have a single Xbox 360 gamepad.

By the way, thank you to everyone who contributed to the poll in the last post. The results were interesting to say the least, and not necessarily what I was expecting, since the most popular character in that poll was actually not even intended to be a featured character in the first release, instead planned to be delegated as a side-heroine for a post-release build of game, but seeing how popular she turned out to be, I may reconsider that now and place more focus on her. I’ll have more details on characters in future updates.

New Character Designs and Progress Report

Brand New Character Designs by Jinae G
Brand new character designs by Jinae G

Quick amendment, but consider voting in the Straw Poll here with your opinion on which girl you find most appealing based on these designs.

I wrote in a comment in my last post on how despite having made significant improvement to the performance of the game’s most demanding location, the school, further development of the location with new content being brought in has brought the framerate back down to unacceptable levels, and has led to the unfortunate realisation that there are some core architectural problems with the engine’s scene system related to occlusion culling. This would require some somewhat non-trivial rearchitecturing of this part of the engine in order to bring the framerate back up. Thankfully, I do have a set of plans for how this could be improved, and it is unfortunately going to result in some further delays, but I think it will be universally beneficial. I’m intending to take my proposal directly to the Godot community and discuss their feasibility as an engine mainline feature

More concept art for glasses-wearing character by Akainai
More concept art for glasses-wearing character by Akainai

On one hand though, I’m going try to focus on some smaller goals for the next update. Right now, I’m trying to address some problems which are present in the engine’s internal light baker, mostly stability issues resulting in crashes, but also missing features like the inability to correctly interact with translucent surfaces and raytracing from the skybox. There is also the issue of this feature’s massively high memory requirements (on my end, not the player’s), which has resulted in me having to recreate my toolchain to allow a 64-bit build of the engine in order to be able to use all the memory I have (8gb), but this may still not enough if the scene continues to grow in complexity, and if I can’t find a way to make this process more memory efficient, I may have to save up for some more RAM.

Concept showing two of the cast in potential casual clothes by Akainai
Concept showing two of the cast in potential casual clothes by Akainai

On the subject of less speculative work, while a lot of work recently has been dedicated to research as to what will be required for the new scene system, most of my other focus recently has more been on recreating early systems I had attempted with more knowledge and experience of the engine. As well as a ton of minor architectural improvements, we now have entirely abstract location loader which allows warping between the school and upcoming locations previously teased at before while retaining the state of higher level nodes in the scene. We also have improved physics, a rewrite of the title screen with some new UI theming, and new general-purpose ingame 3D prompt overlay system (to be used with interactive objects and the upcoming character dialogue system), early work on the character creator screens, and a complete rewrite of the developer’s console with a bunch of new commands such as noclip, setting and getting flags in the visual novel engine, and hooks into the new universal audio system which includes multiple volume controls for master, music, sound, and specific character voices. There’s also a ton of new 3D artwork ready to go in the engine but I’m still waiting for the right time to reveal the majority of it. A longer term goal I’m intending to tackle is creating a brand-new procedural skybox and weather system needed for the game’s timeflow system.

A new design showing potential drills hairstyle by Akainai
A new design showing potential drills hairstyle by Akainai

Something you’ve probably noticed in this post is the presence of the fantastic new character designs for the game’s cast, and my main reason for making this post was that I really wanted to share what these two incredibly talented people had made and hopefully drum up some interest in their own work. Check out their respective pages, they’re incredible, and I hope we can see more from them in the near future.

Same character, this time shown in a maid costume by Akainai
Same character, this time shown in a maid costume by Akainai

That’s all for now. The three near-term tasks I’m going to focus on right now are fixing and improving the offline lightmapper, adding in a completely generalised system for object interaction in the freeroaming mode, and finishing the character model I’d shown previously. I hope you’ll continue to follow this blog and thank you all for being so patient. While I don’t want to put out a build with such glaring performance problems, I may still do it if these issues can’t be resolved in a timely fashion, but I would still rather not have this form people’s first impressions.

Alternative proposed designs for atheletic girl by Akainai
Alternative proposed designs for athletic girl by Akainai

Minor Update – Progress on model based on feedback.

Progress on Character Model
Progress on Character Model

Not sure if this was worth a whole new post, but what the hell. So I took a short break to work on some other aspects of the game, but I’m now back on developing the character. I’ve introduced some changes based on people’s feedback in the comments and started work on clothing. I was wondering if you guys feel it’s made any improvements now. It’s not textured yet, but this may give some insight into how it will eventually look. On the subject of other aspects of the game, I have managed to figure out where a lot of the performance bottlenecks were coming from and it turns out it was more to do with how my scene was structured rather than the capability of the renderer itself, so we are now seeing massive performance improvements in the rendering of static geometry. I’m going to start looking into wrapping up what we have of the school so far and putting out a playable test build so I can get some insight into how this performing on other people machines and to give some sense of the game’s environmental scope and scale. I’ve also been exploring procedural animation techniques, most notably for hair physics.

On that note, here’s a quick preview of one of the new locations Arno has been working on. There’s more to come and I may also update this post to reflect this.

Arno's train interior model.
Arno’s train interior model.