Hello! We’ve been working a lot on Peacenet’s Unreal Engine port and I decided to create a post outlining every major update since the MonoGame releases so far. I will be editing this as we get closer to the first alpha release, so check back for updates!
- Ubiquity-style Main Menu: The game’s main menu is now loosely based off that of the Ubuntu installer (Ubiquity) and now acts as a character creation screen - where you get to, well, create your system, as if you were installing Linux.
- Better email UI: Thanks to @Inkydink, the email UI has been completely redesigned and is much more intuitive and less clunky than the MonoGame one.
- Better file management: The game’s filesystem had to be fully redone in C++, so we’re adding support for Unix uids and file attributes. Soon, programs will even be launchable from files.
Multiple users: Every system has at least two Unix users -
rootand a non-root user. Some systems, like those in an enterprise, may have more… but already there’s a reason to further hack a system when you’ve already gotten into the non-root user. Some actions can only be done as
- Cleaned up the desktop UI: The desktop has been mostly redesigned, and is now modelled after XFCE4.
- New theme: Inkblot - this is the default theme.
- New theme: Mesh - a hacker-style theme that’s also easy on the eyes.
- New theme: Arnix v2 - Version 2 of the original Peacenet theme before Peacenet was called Peacenet.
- New wallpapers:
- theShell - Triangles
- Serenity Blue
- Inkblot Wallpapers
Programs and terminal commands are now united. You can launch programs from the Terminal as commands, just like in Linux. Programs can also now output logs to the Terminal they’re running inside, and with the
sudocommand, they can be run as root.
- Time of Day: The clock in Peacegate is now based on in-game time.
Indicative windows: Windows will have red titlebars (depending on the theme!) if they are running as
- Better procedural generation algorithms.
- NPC generation is now way faster.
- Names are now generated with a markov chain based on existing training data.
- Computers are now separated from characters in the game code, allowing more flexibility and control over who or what owns a computer.
- Support for lootable file generation has been added.
- The game can now generate home directories procedurally.
- NPCs are generated using the exact same code as players and story characters.
- We no longer use a heightmap to determine what generates. We still use a world seed and the game is still split into countries, however.
- NPCs can now have friends and enemies.
- Reputation values are now way simpler.
- NPCs can now have genders, though the game can only support male and female. The gender value is really only used for name generation, since it decides what first-name training data to use. If we didn’t do this, the game could end up combining “Michael” and “Miranda” as a name which would be pretty unrealistic. Using a gender value prevents that completely.
Support for NPC possession has been added. This is the core of hacking, since it’s the backend of
ssh. Possessing an NPC allows you to run a program or Terminal command as a user account on that NPC’s system, rather than your own. Since
bashitself is a terminal command, that means ssh hacking can totally be a thing. GUI programs work the same way too. Even the desktop does.
- The last-used desktop and window decorator is stored in the save file. This allows for theoretical user customization of the aforementioned UI elements.
- App launcher UI’s now cleaned up. Instead of looking like KDE, it now looks like XFCE4.
Fixes and enhancements
- Terminal uses Slate font rendering, which means that the text is less yucky when zoomed.
- Better scrolling has been added to the Terminal emulator.
- The Terminal’s cursor now indicates whether you’re focusing on the Terminal.
- The Terminal now interprets
\r(carriage return) and
\t(tab) characters in the exact same way they would be interpreted on a Windows or Linux terminal.
- Color and formatting codes in Terminal can now be typed out manually by the player, and the cursor will render with the current color referred to by the last color code.
- Thanks to UMG’s DPI handling, the game properly scales up and down based on your screen resolution and DPI.
- Window dragging is now handled way better. The mouse never travels too fast, there’s no jitter, etc.
- Terminal commands now have to tell the game when they finished by calling the “Complete” function when they’re done. This allows for slow commands (that make use of Blueprint latent functions or async methods) to still run on the game thread without blocking the UI. This also allows for program commands to wait until their window closes before returning you to
- Better command tokenizing has been added.
- Console contexts are now tied to user IDs and system contexts, allowing commands to easily access info about the calling user/computer. C++ commands have full access, while Blueprint ones have basic access since it’s less easy to track down a Blueprint command that’s breaking the game.
- Commands can take in their arguments as a raw string array rather than as a Docopt argument map.
- Better support for file association has been added.
- App launcher items now have tool tips.
- NPCs can no longer generate with duplicate names - in MonoGame, there was no code to prevent NPCs from generating with the xact same IP address.
- The campaign world seed is no longer hardcoded, it’s now based off the user info you provide in Peacegate Setup. (If I put in name=Cassian, username=cassian and hostname=cassian-pc), I’ll get a completely different world than what you’d get if you replaced “Cassian” with “Alkaline.”
- Support for unlockable programs, commands, wallpapers, themes and other data has been added.
And…there’s more where that came from.