Community Announcements - 冲浪勇者S
1.The lobby triggers have been updated with additional text prompts.
2.Some UI interfaces have been enhanced with more text prompts.
3.Improved the performance of the game rendering.
4.Added a new trigger entry next to the stage on the left side of the sofa. This is used to present the content of this update.
5.We've updated three threesome CG animations to provide you with a unique viewing experience.
Snacko - enralis
As of v0.9.0_5028, cloud saving is now enabled!

Note that with this update, Snacko's save data location has changed slightly.

Old location:
C:/Users/<your user>/AppData/Local/snacko/Saved/SaveGames/

New cloud save location:
C:/Users/<your user>/AppData/Local/snacko/Saved/SaveGames/<your steam id>/

When launching v0.9.0_5028, your old save files will be backed up to C:/Users/<your user>/AppData/Local/snacko/Saved/SaveGames/NoPlatform, and then copied to the new save location.
Dec 14, 2023
Mind Over Magic - Sparky-Jason
- Updated text and alert for Bound to not refer to Untangling Potions.
- Feeling Slightly Safe status renamed to Feeling Slightly Unsafe, to reflect that it is -Conviction.
- Fix soft-lock when loading a save for a very tall school.
- Fix research layout causing some overlap.
Kerbal Space Program 2 - mikey
The team has been hard at work improving the performance of Kerbal Space Program 2 since launch, so we'd like to take a moment to really showcase the difference between the Early Access launch (v0.1.0.0) and the For Science (v0.2.0.0) release coming next week on December 19. Full global release timing graphic can be found here.

Here's a look at some graphs we use to understand the game's performance and the improvements that have been made to our minimum specification and recommended specification machines:

FPS between EA launch and For Science! on minimum specs.

FPS between EA launch and For Science! on recommended specs.

This represents a huge amount of work by the development team across a number of features and releases. With performance optimization being one of the most frequent requests since launch, we're looking forward to hearing from players how this work improves the overall gameplay experience.

If you're curious about performance tuning and how we make decisions in that area, the rest of this check-in provides a high-level overview from our Engineering Team and should provide a bit of extra context for the above graphs.

Performance 101
As you can see in the charts, performance varies quite a bit between various scenes players might find themselves in. When we’re investigating performance-related issues, we need to investigate many variables both in the game and on the physical machine. Let’s examine the basics of performance tuning and what we look at when trying to make decisions about performance optimization.

In keeping with the theme of For Science!, we should start with defining our experiments and the measurements we will use to determine if we are moving in the right direction. So, let’s start with Frames per Second (FPS), which many of you will already be familiar with. A frame is the period required to fully recalculate what has changed in the game state and redraw the scene to the player. The more FPS, the smoother the game looks and feels, as this allows us to capture inputs quicker and update the game state showing those updates to the user in a more responsive way.

When we are digging into performance, we want to look at that value in a different way: milliseconds per frame (ms). Why would we do that? Basically, we want to understand what, in a given frame, is taking up time so we can make it faster. For a 30 FPS goal, we get 33.3 milliseconds per frame, so it becomes a lot easier to set a budget for how much time a given section of the game should take. But what are we taking time from exactly? There are two pieces of hardware we generally are looking at for performance: the GPU and the CPU.

At a high level, a Graphics Processing Unit (GPU) is a piece of hardware that specializes in the types of calculations that are needed to render a given scene. It is much faster at smaller tasks in parallel than a Central Processing Unit (CPU) but much slower at running tasks in a series. In order to get the maximum performance out of a computer, we want to use both to their full potential and optimize the game accordingly.

Now some of you are thinking “What about memory, storage devices or things like that?” And you’re right that we do consider those things, but for the purposes of this overview we are going to concentrate on the biggest items that affect performance. But bonus points all around.


An example internal debug output.

One of the important parts of performance tuning is to understand what the bottleneck is in each scene, either the CPU or the GPU. In the image above the CPU is taking 44ms per frame on a scene and the GPU is only taking 19ms. The CPU is the bottleneck in this case, so it doesn’t matter how much more optimization we do on the GPU. To improve this specific case on this specific hardware, we need to determine and target the most expensive operations on the CPU.

One of the challenges of making a PC game compared to consoles is the variety of hardware choices, specifically when it comes to CPUs and GPUs. There are thousands of combinations that someone could have, and each of them is going to perform slightly differently. That doesn’t even get into memory differences or software differences like operating system patches, hardware drivers, etc. This is why we publish minimum and recommended machine specifications - to help players understand what we have tested and if their machine should be able to play the game with adequate performance.

Now that we have some background on what developers look at for performance tuning, let’s go back up to those graphs at the top. For one, these are per-configuration graphs, which are used to tell us how the game is performing on that specific hardware. We do lots of these which help us to remove the hardware variables from the tests and just look at how the given build is performing overall. It also lets us look at this data over time and see if things are improving or not. As we add features, these will always affect performance, so we need to be checking the deltas consistently to determine where we need to spend time on improvements. The other thing these graphs help determine is if a given hardware setup has abnormal issues compared to other similar setups. A given manufacturer may have optimized their hardware in such a way that we get different performance out of certain improvements and knowing that helps us optimize the game for the entirety of our player-base across a wide range of hardware options.


We hope that this has been informative! As we work towards larger performance optimization goals in the future, we’ll be sure to share updates in posts just like this – and perhaps take a more technical deep-dive in a performance-focused dev blog, so let us know if you’d like to see that!

Thanks for reading and hope you enjoy For Science!

-The KSP Team
Dec 14, 2023
Progress Game - Reneator
Olla,

when testing the game with friends, it seems that the wand wasnt tested properly yet and some crash-worthy stuff popped up.

- Projectile_Weapon_Tooltip: Fixed crash
- Holy Spark Blind: Fixed damage function causing crash
- Projectile Weapon: Fixed Ammo crashing the game due to missing damage_type (mana ammo type for wands)
Dec 14, 2023
Ordinary Day - Late Night Studios
Verify your game files if you have not already had an update to your game! This will update your game with the release build and intended version.
Moonring - Fluttermind
A couple of sneaky sneak bugs have crept into the last major update. The ping-pong region teleport has returned for some of our more intrepid players. The problem here was that they'd gone somewhere very bad and the gods were punishing them. It definitely wasn't me being stupid. Nope.

Anyway the gods have stopped punishing them now. So... there's that.

In addition, it was possible to go somewhere for a nice picnic, die, and then respawn back at your checkpoint while your ship remains lonely and forlorn, wondering if you've a younger, prettier ship. Now, when you get a checkpoint, you're forced into marriage with your ship and it will also return to where it was when the checkpoint occurred... or at least it does on my build. God knows what it'll do on yours. Probably burn your favourite shirt or something. Anyway...

Hopefully, this build has fixes for:
  • Dying in an inconvenient place can leave you stranded without a ship
  • Escape effect does not center on end location
  • Imps that flee remain around, invisibly, and still bleed from Gash
  • Can use some attacks against non-summoned enemies
  • Side bar text does not match Tether defeat goals
  • Reaper does not turn on player when there are no targets
  • Enemies can be heard even when you are deaf
  • Burning creatures do not ignite oil
  • Escape doesn't consume energy due to the Zoom Out changing the player mid-way through the action!
  • Casting Gamble on Necropolis boss causes crash
  • Health is handled incorrectly on leaving Relic Dungeons
  • You can't use Orb of Veils or similar if your target is across a pit
  • Bloodstone is blocked by arrow slits
  • Hard crash in Tower of Veils with Noman counting down
  • Finding 50+ ruins is impossible
  • Mouse-click on left icons not working sometimes (during Inventory Open?)
  • Areas with minimal walkable tiles in the Overworld spawn infinite hunting spots due to lack of choice!
  • Summons can arrive on your tile when you enter a location
  • Test Yell word for hidden heart in Moon-upon-Thoss
  • Massive slowdowns when playing on HDD
  • Bleed damage gives player energy
  • Inventory shows 'Your last one' when selling, even if the item does not stack



Dec 14, 2023
(the) Gnorp Apologue - mycomyco
Timeshift delivery is a bit too strong.

  • Timeshift delivery 1 seconds -> 0.5 seconds
Logic World - Jimmy
Hello, it's me, Jimmy from Mouse Hat Games. If you're reading this, you've probably been following Logic World for some time, and you've probably noticed that for the past year, there's been very little official communication about Logic World. I'm truly sorry for the silence. It ends now.

Beginning in January, a number of things began falling apart in my life. Throughout this year I've suffered a host of physical health problems, mental health problems, and other personal issues. I wanted desperately to be working on this game that means so much to me, but I just wasn't capable of it. I felt embarrassed and ashamed of that, so I just disappeared from our community. (One of many things I've learned about myself this year is that I have avoidant tendencies. I'm working on it.)

The good news is that, since June, I have been laser-focused on fixing my life, and I've been extremely successful. May 2023 was perhaps the worst month of my life. November 2023 was the best so far.

I'm able to work again, and to love working, so I've been working a lot. Much has been happening recently and the future of Logic World has never looked so bright.

It's good to be back. Let me tell you a bit about what's been happening, and what's next.



A New Team

For the first year of this project's history, I was the only programmer working on Logic World. Felipe, an exemplary modder of the early prototypes I had released, joined the team in 2018. For the following years up through the Early Access launch of Logic World in 2021, Felipe and I developed the game together as a tight two-person team.

I'm pleased to announce that, for the first time in five years, we've gained another programmer. And another. And another. The core Logic World development team is now five coders strong: joining myself and Felipe are Zoey, Ecconia, and GHXX.

I LOVE working in this new expanded team. Everyone is so passionate and so capable. The skillsets and perspectives that each team member brings are diverse and complementary; we bring out strengths in each other, and truly I believe we are greater than the sum of our parts. The development velocity is amazing -- stuff gets done way faster than it ever did when we were less than half this size.

It has been an intimidating challenge to step into my new leadership role, overseeing so many people and moving parts, but I'm learning fast and I think I'm really growing into it. Managing people is hard, much harder than I thought it would be, but it's also profoundly rewarding. I'm thrilled and honored to be at the helm of this metaphorical ship.

You'll see the new developers around in devblogs, youtube videos, and hanging around in community spaces like our discord. I'll take a moment now to introduce our three new team members, and give them each a space to say hello in their own words.

Please give a warm welcome to:

Zoey

Zoey is maybe the smartest person I've ever met. It's quite a common occurrence that we'll be discussing architecture & design for some incredibly complex system, and with a sinking feeling of dread, I'll realize that there's a terribly hard problem with it, the kind of problem that takes me days of thinking and researching before I start to feel like I might be approaching a good solution. I'll vocalize this problem to Zoey and ask her thoughts on it. "Oh, that's easy. We don't need to worry about that," she'll say, and then she'll describe a brilliant, perfect, ingenious solution that not only solves the problem I brought up but also five others I hadn't yet realized were there.

Zoey sees computers and code with a clarity of thought I've never encountered before. The experience and expertise she brings to the team is invaluable.

Hello! I'm Zoey, a self taught software engineer from England.

So what's my story? Well, let's start at the beginning.

13.8 billion years ago there was nothing, and then, there wasn't. A short while later, I was born. Ever since then I've had a fascination for technology, an unquenchable thirst for knowledge, and a passion to create. As a result, I have worked on hundreds of random personal projects over the years, from terrain generators and physics engines to robots and computer vision.

The full list of projects would be too much to put here, and frankly, I doubt I could remember them all, but here are a couple of my favourites:

Sparse Voxel Octree Ray Tracer (SVORT).
Voxels are fun, and ray tracing is fun, so why not combine the two? Standard voxels use too much ram, and are slow to traverse, so let's use a Sparse Voxel Octree, and write it all in CUDA!
To create my SVORT I began by designing a custom SVO data format, allowing for a compact data representation and efficient traversal. After that, I needed something to actually render, so I wrote a 3D model to SVO converter, allowing me to convert textured 3D models to my custom SVO format. Once all of that was done, it was time for the ray tracer itself. The most complex part of the ray tracer was figuring out a way to efficiently traverse the SVO on a GPU, but in the end I got everything working smoothly, and was able to render scenes at a scale of 4096^3 voxels with 24 bit colour (192GB without compression) in real time on a card with 8GB of VRAM.

Custom CPU Design.
Another subject that I enjoy is custom CPU design. Whether it is in Minecraft or a logic simulator, I have always found this area fascinating. The project I took the furthest started with designing my own Instruction Set Architecture. Though next, rather than stepping into a logic simulator, this time I wrote an emulator with an output terminal, along with some initial bytecode for testing. Once I had verified that it was working, I proceeded to write an assembler to ease the process of writing code for the CPU. That was all well and good, but for this one I decided to take it one step further. Buying a cheap FPGA development kit, I decided to bring my CPU into the real world. Writing the implementation for the CPU out in Verilog, along with an interface for the UART transceiver, I managed to get my custom CPU running and communicating with a terminal on my computer, bringing the project to a satisfying conclusion.

Throughout all that I've worked on, computer science has always held a special place in my heart, and when I came across Logic World, I knew I had found something I just had to be a part of.

As part of the Logic World team, my primary contributions will be improving performance and efficiency, and the occasional fancy algorithm to add a new feature.

Ecconia

Ecconia is the biggest superfan of Logic World there ever was. For years he's been building incredible machines in the game, creating dozens of spectacular, joyful mods (not to mention creating modding tools and frameworks), hosting servers, helping newbies get on their feet, and one time even re-coding the whole game from scratch in Java. The years-long dedication he's had to Logic World is awe-inspiring, and it's only natural that he now joins the dev team to drive the game's success in the most direct way possible.

Ecconia understands deeply what makes Logic World good, where exactly it's lacking, and just what needs to happen for it to fulfill its potential and be the best it can be.

Heya, I am Ecconia.

I live in Germany, studying Computer Science. My primary hobby is ice skating. I like to write big messages.

I started doing boolean logic circuits as a young boy on the playground, drawing a Full Adder circuit into the sand. Eventually that led me to Redstone, but I never felt happy there. There were many inconsistencies and weird unintentional behaviors.

But being active in such a community brought my attention to
Logic World
: a boolean logic simulator, which did not give me nightmares. Being fascinated with the game and waiting for the Early Access release, I consumed all information about the game there is -- reading all LWW posts, watching all related videos -- which gave me a lot of insight.

During the long time of waiting, I started the OpenTUNG project, which basically is a rewrite of LW's alpha version without the bugs. But now that LW is released, we're all using LW, so I'm no longer working on OpenTUNG.

Being a programmer and gamer/modder, after some time I got annoyed by a certain bug in Logic World: it was not possible to automatically noclip when flying without freezing the game. I wrote a mod which fixed this bug, making it possible for me to enjoy LW more. If you've ever done game modding, you know it's a dangerous rabbithole. Once you start ... there is no going back.

At first I made simple mods like DisableCollision, but I soon moved onto really ambitious mods like CustomWirePlacer -- a mod that fully replaces the vanilla wire drawing to add 2D wire placement support and much more. In my eagerness to explore all the possibilities and features of modding I got to know all core code of the game.

Btw, my ultimate goal in LW is to build a computer which I can write programs for from inside the game. Starting with a capable typewriter to input assembly code...

As part of the Logic World developer team I am going to squish bugs and enhance the moddability of the game. I am excited to be part of the team and to discuss and develop things together, to make solutions even better. Let me be a gateway for modders to suggest API features. Happy :)

GHXX

GHXX is a brilliant engineer, both within Logic World and beyond it, who pushes the boundaries of this game like nobody else. He has an incredible amount of skill and knowledge across technical domains, and he applies it to this project with invigorating fervor. In-game, he creates intricate yet expansive machines that I adore -- so much so that I used screenshots of them in the 0.91 release blog.

GHXX's excellence and passion are constantly pushing me to be a better developer, and shaping Logic World into a better game.

Hi, I'm GHXX, a self-taught programmer, with around 10 years of experience in C# (the language that Logic World is primarily written in) and a varying, but smaller amount of experience in a plethora of other languages. I also like to reverse-engineer code, even on the assembly level and, of course, play modded games.

Over the course of this timespan I have written many mods/tools for several games (Rimworld, KTaNE, Cookie Clicker, Garrys Mod, Factorio, Logic World and others), and even some modloaders/tools that make modding a whole lot easier for some games.

My most intensive reverse-engineering project to date is my modding interface for a very nice chess-spinoff game called *5D Chess With Multiverse Time Travel*. My interface adds a bunch of features to that game and enables easy modding of it, with zero modifications to game files, by patching the code at runtime -- and it's even quite stable. I'm proud of this project but it came at the cost of spending well over one hundred hours digging through compiled C++ code.

I have also created a few Logic World mods and personal dll patches back in the day for 0.90.3 which addressed a few problems when playing on pretty large worlds. In fact, all of those mods/patches, with the exception of my TCP Bridge mod (which I should probably update at some point as it is currently sitting on 0.90.3, despite likely working for 0.91.1 anyway), were actually just created so that a dear friend of mine, known as 00asdf, and I could continue extending our gigantic world, containing just under 2 million components, which we have been building ever since we purchased Logic World on Steam.

Generally, what would happen is that we would play, then face some kind of performance roadblock, at which point I would leave the server and investigate and mod around the issue, so that we could continue expanding. The ability to add fixes directly to the game, rather than having to cook up a modified dll or a harmony mod is the main thing that got me interested in helping out with Logic World.

I am very grateful to be part of the dev team, as the collaboration between all of us will hopefully lead to a much much more performant version which enables everyone, including myself, to create ever bigger and more ambitious builds.

I love this freaking team. What an amazing group of humans.


A New Update

We've been cooking up a new game update for you! Logic World v0.91.2 will be dropping next Wednesday, December 20 on Steam and https://mousehatgames.itch.io/logic-world. This is a jolly little update containing large performance improvements, some better building mechanics, tons of bug fixes, and a whole bunch of other miscellaneous goodies. It's the first update that all five of us in the new core dev team have worked on.

As usual, the full detailed changelog for v0.91.2 will be posted here on this blog when the update comes out. To make sure you don't miss it, sign up for our fabulous newsletter.


A New Engine

Unity just kind of sucks in general and it keeps getting worse and we all hate working with it and recent events have made it clear that as an organization Unity cannot be counted on to not do terrible awful horrible crap that completely screws us over. We want Logic World to be built on a tech stack that we love and have confidence in; we want the future of our game to be secure and within our control; maybe most importantly, we want our experience of working on our game to be as pleasant as possible, so that we feel joy when we open the project, rather than dread as we are forced to wait for ten minutes for Unity's goddamn progress bar to do god-knows-what.

With all this in mind: update 0.91.2, coming next week, will be the last version of Logic World built on the Unity engine (unless we need to push a hotfix). Once 0.91.2 is out, we'll be devoting ourselves to porting Logic World from Unity to Godot: an open-source, community-driven game engine with a bright and gleaming future.

We evaluated many options for the new engine before settling on this one. There are a lot of reasons I love Godot, and we'll probably do a full development blog dedicated to the upsides of this engine, but in short, Godot is:

  • fun to work with,
  • NOT UNITY, and
  • free and open source software, so once we've moved our game to Godot we will truly own it and have control over it.
The work to port things will not be fast or easy, but it's the best move for our long-term future. I've been looking for years for an opportunity to get away from Unity, and now is finally the right time.



---------------------------------------



I love Logic World so much. I'm excited every single day to wake up and work on it.

We'll see you next week for update 0.91.2. We'll see you in 2024 for many exciting development blogs and huge new game updates on our glorious new game engine.

We are Mouse Hat Games, we are stronger than we've ever been, and we are going to build the greatest circuit simulation video game ever made.

Thanks for reading. It's the privilege of a lifetime to make this thing for you.

Jimmy Cushnie
Creator of Logic World

Archmage Rises - philmacnevin
FIXED:
  • Fixed a bug related to quest givers that could potential prevent save games from loading (thanks to Ashpeef for the bug report)

IMPROVED:
  • Added option to disable rivals when creating a new game (requested by TakeMyLunch)
  • Improved text highlighting during NPC dialogue to recognize more opportunities to highlight keywords
...