Finger info for flibitijibibo@icculus.org...


10 Years

On April 12, 2012, I received access to the Waveform source code, for the purpose of bringing the game to Linux and macOS. Classes were ending soon and my summer job was already underway.

That summer job hit its 10th anniversary today.

A few random numbers:

Thanks to everyone who has enabled me to be a full-time independent developer for a decade, especially those who continued to support native developers this past year. Native developers and specialists can give small games the attention they deserve, something that no monolithic superpower can ever provide, no matter how much they might claim otherwise.

See you at my next native release!

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
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
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. Create /usr/share/xsessions/steamos.desktop:

[Desktop Entry]
Name=SteamOS
Comment=SteamOS (Gamescope)
Exec=/usr/bin/steamos-session
TryExec=/usr/bin/steamos-session
Type=Application
DesktopNames=SteamOS

9. Steam Deck UI

dnf builddep gamescope
dnf install git xorg-x11-server-Xwayland-devel
Build/Install gamescope: https://github.com/Plagman/gamescope
echo steampal_stable_9a24a2bf68596b860cb6710d9ea307a76c29a04d > ~/.steam/steam/package/beta
STEAM_MULTIPLE_XWAYLANDS=1 gamescope --xwayland-count 2 -e -W 1280 -H 800 -- steam -gamepadui -steamdeck -steamos3

10. 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 chrpath cmake cmake3 freetype-devel gcc-c++ \
    git gtk3-devel hg libcxx-devel libstdc++-static libusbx-devel \
    libuuid-devel libvorbis-devel libxml2-devel lzma-sdk-devel meson \
    ocl-icd-devel openal-soft-devel opencl-headers openssl-devel patch \
    perl-IPC-Cmd svn unix2dos yum-utils yum-plugin-copr zlib-static
# SDL2 dependencies
yum-builddep SDL2
# Coprs for MinGW as well as GCC 10, needed to build Clang/LLVM/osxcross
yum copr enable mlampe/devtoolset-10
yum copr enable alonid/mingw-epel7
yum install devtoolset-10 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

# Wayland updates
su -c 'yum remove wayland-devel wayland-protocols-devel'
curl -O https://gitlab.freedesktop.org/wayland/wayland/-/archive/1.19.0/wayland-1.19.0.tar.bz2
curl -O https://gitlab.freedesktop.org/wayland/wayland-protocols/-/archive/1.25/wayland-protocols-1.25.tar.bz2
curl -O https://gitlab.gnome.org/jadahl/libdecor/-/archive/0.1.0/libdecor-0.1.0.tar.bz2
tar xvfj wayland-1.19.0.tar.bz2
tar xvfj wayland-protocols-1.25.tar.bz2
tar xvfj libdecor-0.1.0.tar.bz2
mkdir wayland-1.19.0/flibitBuild
mkdir wayland-protocols-1.25/flibitBuild
mkdir libdecor-0.1.0/flibitBuild
cd wayland-1.19.0/flibitBuild
meson .. --libdir=lib -Ddocumentation=false
ninja
su -c 'ninja install'
cd ../../wayland-protocols-1.25/flibitBuild
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig" meson .. --libdir=lib
ninja
su -c 'ninja install'
cd ../../libdecor-0.1.0/flibitBuild
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig" meson .. --libdir=lib -Ddemo=false
ninja
su -c 'ninja install'

# PipeWire 0.3.42 (Highest version usable with meson)
curl -O https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/0.3.42/pipewire-0.3.42.tar.bz2
tar xvfj pipewire-0.3.42.tar.bz2
mkdir pipewire-0.3.42/flibitBuild
cd pipewire-0.3.42/flibitBuild
meson setup .. --libdir=lib -Dsession-managers= -Dpipewire-v4l2=disabled -Dv4l2=disabled -Draop=disabled

# Also:
# Configure SDL with PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
# 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 devtoolset-10 bash

Wait, a "plan"?

Well, this is a .plan file, so here's my TODO. Expect nothing from it, ever.

In Progress
    Codename B

Waiting Room
    Codename MissedOne
        - Waiting for tester feedback
    Codename Pepperoncini
        - Waiting for tester feedback
    Super Hexagon Neo Part 2
        - Whenever mobile is ready for the ubermerge
    Codename DanishBootleg
        - Port is done, content is not
    flibitEffect
        - Waiting for the client to generate a header for me
    Codename Devolution Assessment
        - Waiting for a source drop
    Proteus "Neo" Rewrite
        - Not actually a thing, I just wish it was
        - Pending some replies
    Coding History
        - On call throughout development
    VVVVVV 2.4
        - Giving the localization project as much time as it wants
    SDL_ActionSet
        - Needs a pretty big grant
    ScoreRush PC
        - Need AppAdmin for publish, crosshair for mouse
    Anodyne 1
        - Retirement project


When this .plan was written: 2022-06-02 15:04:13
.plan archives for this user are here (RSS here).
Powered by IcculusFinger v2.1.27
You could be playing Pringles for Genesis but instead you're here?