First build in months. (Project: Oglowia Prealpha)
So it's finally here, after months of me tormenting and teasing you guys with developer updates and screenshots on Twitter, the Discord and YouTube. The Peacenet's first build in months (and also the first build of 2019.) And there's a lot to show, even in its prealpha no-gameplay form. I'm excited. You? And, what the heck took us so long!?
Yes, what did take so long..?
Well it was a lot of work to get this build out. I started the Unreal rewrite of this game all the way back in July of 2018. I had to learn C++ and Unreal to do it, but the benefits of doing so were too glamorous for me to pass up. As I started to learn Unreal, I started to see possibilities for gameplay mechanics, UIs, art styles and missions that I could never dream of coding in C# and MonoGame.
But there were a LOT of challenges I had to overcome which is why I wanted to completely change the way I release this game from my old weekly release schedule of the MonoGame days to a 6-month schedule but with iterative updates containing bugfixes leading up to each major milestone. I'd like to talk about some of those challenges, hopefully in chronological order.
Writing the Terminal
The Terminal has been a big, important thing for me to code in Peacenet - even in the ShiftOS days, the Terminal was very important. However it's way more important to get it right in Peacenet. As part of the hacking experience I wanted to make the terminal seem as realistic as I could. I wanted to model its rendering code after that of a real terminal emulator, I wanted to have the command interpreter work almost exactly like bash (though, NO FORKBOMBING), I wanted to implement things like the unix pipe - chaining commands together using the previous one's output as the next one's input - and there was a big emphasis on the filesystem. And I'm not done yet.
The emulator itself was relatively easy, after learning how to directly paint to a UMG widget in C++ (there's no way you'll ever do this in Blueprint. Learned that the hard way. Framerate = 1 frame per year even on my 1050ti.) Then Epic decided to deprecate the paint functions I was using in UE4.20 so they stopped working, so I had to rewrite it again in August. Yikes.
After getting the emulator working I needed some way of letting the player run commands. I can't tell you how many different backend systems I ended up coding before I could finally get both the C++ experience and Blueprint experience of writing terminal commands feel right. That's not even delving into command-line arguments, which is a problem I am STILL trying to work kinks out of. (Though docopt.cpp is a great library for that stuff. Trust me.)
Soon I ended up with a basic bash interpreter. And I mean basic. The thing couldn't even run GUI programs like you can in Linux. So I had to basically shoe-horn in a "Graphical Terminal Command" which the game creates for every program you have unlocked, when the game loads. Much the same for Vulnerabilities/Exploits. Now you can do all of that in the terminal though which is kind of cool.
Pick a damn art style and stick with it, Alkaline.
DO NOT get me started about UI in this game. Our windowing system is very flexible allowing us to easily change the look and feel of the in-game operating system - with very moderate tweaking of the actual program UIs. Even then it's purely visual, and MAYBE hooking up a few Blueprint nodes to make a Close button close the program.
But actually laying out the UI was.....half the battle. Laying it out is fun but.... we needed a proper art style. This'd come in the form of Peacegate OS's desktop theme.
For wallpapers it's easy. I coded a system where you can create "wallpaper assets" which are just textures with an in-game filename and a title assigned to them as well as some values dictating whether they're unlocked by default in a new game and whether they're Peacegate's default wallpaper. Write a few lines of code in the game's core routines and now all your unlocked wallpapers appear as .png files in /usr/share/wallpapers (I THINK. You might need to look around.)
Twas a whole different story for the actual theme though. The window decorator and font family changed way too often over the months of September, October and November. We went from Victor Tran's Contemporary theme, to AShifter's Arnix v2 theme, to his Mesh theme, to my HORRIBLE custom theme (remember that wide all-caps font, Discord guys?) to astro's Inkblot theme and we finally settled on Mesh in December. Had we spent that time doing gameplay though.......man........
Now pick a damn window manager style and stick with it, Alkaline.
First we started out in the early days of MonoGame with a docking window manager. Then we added a stacking one similar to ShiftOS. That stuck with us ALL THE WAY into Unreal until I decided to make it a docking WM again. Then I made it a tiling WM and that's what this build is. Honestly I have mixed feelings on the tiling WM nowadays. I'm starting to want to revert to the old stacking manager because it's still in the code. I guess it depends on what people think of the tiler in this build.
So what's in this build?
No gameplay, but there is a lot.
- Fully functional terminal. Hit CTRL+ENTER on the desktop, and it'll open. Then type help for a list of things you can do.
- Tiling window manager. Subject to change but we went after i3wm for this one.
- Procedurally generated NPCs. Not useful right now because you can't fully hack them, but you can at least see the name generator at work by running the "browse" command to open the prototype version of Peacenet Browser.
- Fortune - had to include it. No linux distro, even a fake one, is complete without it and cowsay. Cowsay's coming in beta.
- Early Address Book prototype - this is where your in-game contacts get stored and as you learn more about people in Peacenet it'll grow. It's a lot like the Profiler in Orwell.
- Wallpapers - I mentioned this above - type "appearance" in the terminal to change your wallpapers.
- Workspaces - FIRST build of Peacenet with a fully working virtual desktop system. Because we're Unreal Engine lovers I might be able to pull off a desktop cube animation in later builds. If you want.
However there are a lot of issues and missing features with this build so do not set your expectations high. Set 'em higher for the alpha. The point of this build is to see if the game actually runs and works on other people's systems without Unreal Engine's editor. I also want to see, even as a prototype, how easy to use the game's user interface is. So think of this as just a test drive. You won't see gameplay in this build. I'm still working on the real thing.
Feedback is GREATLY appreciated and I encourage you to get your hacking- and Linux-loving friends to take a look at this. Sadly no linux release of this build, and no Win32 either. Only Win64. Later builds will hopefully support linux and win32.
Get The Peacenet
Leave a comment
Log in with itch.io to leave a comment.