Streets of Rage 4 Linux/macOS
After months of COVID troubles and other non-technical delays, I can finally say the words "Streets of Rage 4 is now available for Linux and macOS!" I can also say the words "Yes, you still have to manually tick and untick the Force Compatibility Tool box to download the Linux version." Oh, also "GOG releases are happening tomorrow, you know how it is." UPDATE: GOG builds are live!
"But flibit," I hear you say, "you've released three other projects in the last few weeks, what makes this one special enough to post in .plan?"
Well, person who is extremely good at posting links, this one happens to be a number of different things:
- My 50th FNA port! (67th overall port but that's not as exciting)
- My last project in flibitOffice 3.0!
- My first FNA project where I'm advertising a Vulkan renderer!
Yes, at long last we're in a position where we can start looking at Vulkan more seriously for FNA, at least from a testing perspective. On Steam you will see two options, one for OpenGL and one for Vulkan Experimental. What does Vulkan provide that OpenGL doesn't? Broadly: Nothing at all, since performance is really good for both renderers. Arguably the Vulkan renderer just raises the VRAM requirement significantly, since texture memory is no longer marshalled between VRAM and host memory, and this game has all the textures. Basically, if you don't have a 4GB+ card, you shouldn't even try to use it. Just about the only thing exclusive to Vulkan is "mailbox" mode, which replaces the "low latency" checkbox found on the Windows version. To enable mailbox mode:
FNA3D_VULKAN_FORCE_MAILBOX_VSYNC=1 %command%
When available, this will use VK_PRESENT_MODE_MAILBOX_KHR which allows the engine to not wait on vsync while also not allowing for tear lines. The game still runs at a 60Hz timestep, but frames will be presented as soon as physically possible, which should noticeably reduce latency for some setups. This is not available for OpenGL and I opted to remove the in-game tickbox because it turns out that mode just manually shoves in a glFinish after SDL_GL_SwapWindow, which I'm not 100% certain works as intended everywhere (it definitely doesn't on macOS).
Aside from that? It's the regular ol game in its perfectly preserved glory. No potentially dangerous write watch hacks needed! This one's been in the waiting room for a while (it was so long we had time to write a whole dang Vulkan renderer), so I hope you'll enjoy it after such a long time!
GitHub Sponsors!
I'm happy to announce that I am now in the GitHub Sponsors program! This means that anyone with a GitHub account can now subscribe to a monthly payment system that will allow me to continue my work maintaining the numerous FOSS game development projects that I maintain, including FNA and FAudio.
You can find my sponsorship profile here.
If you're on the fence about this, I'll give you quite the incentive: Microsoft is skipping all payment processing fees, so in addition to taking extra money out of Microsoft's pocket (which I think my audience will take some joy in...), everything you pledge will go directly to me. A slight change of pace from Patreon's usual scams, hm?
I've been very vocal about the poor state of the crowdfunding ecosystem, and I think the GitHub Sponsors program is very much what we've all been looking for. I think you'll agree, and I hope you'll pledge what you can!
Want a Linux game?
I have my own hit list as always, but I'm always looking for more projects! Now's a really good time to hit me up while it's on my mind. Don't forget, whether you're an indie developer or an independent developer, there's a good chance I can accommodate your needs!
Love, flibit
flibitijibibo.com
Bill's Hat
Turn a minimal Fedora installation into a SteamOS box!
1. Write Fedora Workstation NetInstall ISO to a USB drive
2. Boot USB image, install Minimal configuration with standard partition layout matching SteamOS'
3. Set root password, create a user called 'steam', set a password for it
4. Reboot, log in as root
5. A whole bunch of commands:
dnf group install hardware-support
dnf install Xorg xorg-x11-drv-evdev libglvnd-egl vulkan-loader.x86_64 vulkan-loader.i686 lightdm flatpak NetworkManager-wifi kernel-modules-extra bluez
dnf config-manager --add-repo=https://negativo17.org/repos/fedora-steam.repo
dnf install steam steamos-compositor steamos-modeswitch-inhibitor.x86_64 steamos-modeswitch-inhibitor.i686
setsebool -P allow_execheap 1
systemctl enable sshd.service
systemctl enable lightdm.service
systemctl set-default graphical.target
6. Edit /etc/lightdm/lightdm.conf:
pam-service=lightdm-autologin
pam-autologin-service=lightdm-autologin
user-session=steamos
autologin-user=steam
autologin-session=steamos
7. Create /var/lib/AccountsService/users/steam:
[User]
Session=steamos
XSession=steamos
Icon=/home/steam/.face
SystemAccount=false
8. Reboot, should work now!
9. Additional steps for NVIDIA users:
dnf config-manager --add-repo=https://negativo17.org/repos/fedora-nvidia.repo
dnf install kernel-devel dkms-nvidia nvidia-driver-libs.x86_64 nvidia-driver-libs.i686
reboot # Should be using the NVIDIA driver now!
flibitBuild
Want to replicate my build machine? Grab CentOS 7 and have a look...
# Update base install before doing anything else
yum update
# Add EPEL
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# Add SCL
yum install centos-release-scl
# All the base build tools!
yum install bzip2 bzip2-devel clang cmake cmake3 gcc-c++ git hg \
libcxx-devel libstdc++-static libuuid-devel libxml2-devel llvm-devel \
lzma-sdk-devel openal-soft-devel openssl-devel patch svn yum-utils \
yum-plugin-copr
# SDL2 dependencies
yum-builddep SDL2
# Coprs for MinGW as well as LLVM 8, needed to build osxcross
yum copr enable mlampe/devtoolset-8
yum copr enable mlampe/llvm-toolset-8.0
yum copr enable alonid/mingw-epel7
yum install devtoolset-8 llvm-toolset-8.0 mingw32-* mingw64-*
# CMake3 by default
alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake 10 \
--slave /usr/local/bin/ctest ctest /usr/bin/ctest \
--slave /usr/local/bin/cpack cpack /usr/bin/cpack \
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake \
--family cmake
alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \
--slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \
--slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \
--family cmake
# Also:
# Modify unistd.h to change __block to anything but __block
# The CMake config provided by SDL2-mingw is terrible, delete the block
# that starts with "if(NOT TARGET SDL2::SDL2)".
# Be prepared to pass -std=gnu99 manually. A LOT.
# To enter Mac building mode (and to build osxcross itself):
# scl enable llvm-toolset-8.0 bash
Wait, a "plan"?
Well, this is a .plan file, so here's my TODO. Expect nothing from it, ever.
In Progress
flibitOffice 4.0
- Assload of maintenance work first, then bring it all online
Superliminal 2019.4
Waiting Room
FNA3D Vulkan Beta
- Others are looking at this right now
Codename HM05, Mascara, Rennes
- After December
Star-Twine
- Mostly waiting for an open window to deploy
Hades
- I think Dexter might do it?
Panzer Paladin
- Uhhhh?
Anodyne 1, TFoL, VVVVVV 2.3
- These come after flibitOffice 4.0
Rhys
- Someone has to remove the XNA relinker
FNA Tutorial
- Leaving this alone for a bit
SDL_GetAudioDeviceSpec
- Oh god I don't even know dude
ScoreRush PC
- Graphics, AppAdmin, strings for PC settings, blah blah blah
64-bit Panic
- Waveform repo :/
- Gotta rebuild all MojoSetup packages (F you Canonical)