2025-08-18
here is a wonderful interview with Mr. Dubov, a professional gamer:
https://www.youtube.com/watch?v=9M5pAhnwtnk
i've believed for the last 15 years that the most exigent most extreme
subject matter experts across all of humanity's varied pursuits happened to be
StarCraft Broodwar pro gamers. this came up in the ASL20 round of 24 group A
english language cast today and it seems a not uncommon sentiment.
https://www.sooplive.com/video/146185
I repudiate this now and no longer can believe it. Different kinds of evidence
are useful for disabusing different kinds of people from different kinds of beliefs.
Gamers will generally have enough latent knowledge such that that interview should
allow them to free themselves from any similar illusions.
Here's hoping that gamers update! if no one does then that's fine too: i haven't actually
made my case here but only indicate that the argument is plainly there to be
made. if bw shipped with microsoft windows that'd help get us closer.
2025-08-11
The work continues towards a quality quake emission.
And this will be my configuration for the time being. it turned out to be pretty
straight forward.
- no changes to my quake config, but i did end up including some
lines with their default values.
- environment gets vblank_mode=3
- xrandr gets the 120hz modelines added for the capture card on HDMI-1 and
gaming CRT on VGA-1
my recording doesn't tear and looks much improved. i would need a better capture card
to be able to play with 150hz and capture, or i might be able to do something
with this setup and the vulkan backend. in any case, lucky me (^^;
some other things i hope to add:
- when on the main page a live stream should start playing
- individual pages for blog posts
- blog post tags
- tap master gm
- ketsui second loop
- s rank bw
- 14k damage cpma game
2025-08-08.2
here's a post about trying to record quake without screen tearing.
https://dri.freedesktop.org/wiki/ConfigurationOptions/
https://www.x.org/archive/X11R7.6/doc/man/man5/xorg.conf.5.xhtml
https://man.archlinux.org/man/amdgpu.4
~~~bash
# first attempt to stop tearing with no regard for gameplay quality
# man amdgpu states TearFree set to auto applies to outputs with a transform
# does none count as a transform? well TearFree applies when there is a rotation so lets add that
export vblank_mode=1
xrandr --output VGA-1 --mode 640x480
xrandr --output HDMI-1 --mode 640x480 --same-as VGA-1 --rate 60 --transform none --rotate inverted
cd ~/Q3
./quake3e.x64 +set fs_game defrag
~~~
this is still ripped to shreds
~~~bash
user@tekobari:~$ inxi -GSaz
System:
Kernel: 6.12.30-0-lts arch: x86_64 bits: 64
compiler: gcc v: 14.2.0 clocksource: tsc
avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/boot/vmlinuz-lts
root=UUID=5f0b0d70-cfbd-4289-b181-0981f319c492 ro
modules=sd-mod,usb-storage,ext4,nvme quiet
rootfstype=ext4
Desktop: i3 v: 4.24 with: i3bar tools:
avail: mate-screensaver,xscreensaver vt: 7
dm: LightDM v: 1.32.0 Distro: Alpine Linux v3.21
Graphics:
Device-1: AMD Cape Verde PRO [Radeon HD 7750/8740 /
R7 250E] vendor: PC Partner / Sapphire
driver: radeon v: kernel arch: GCN-1
code: Southern Islands process: TSMC 28nm
built: 2011-20 pcie: gen: 3 speed: 8 GT/s lanes: 8
link-max: lanes: 16 ports: active: HDMI-A-1,VGA-1
empty: DVI-D-1 bus-ID: 01:00.0 chip-ID: 1002:683f
class-ID: 0300 temp: 62.0 C
Display: x11 server: X.org v: 1.21.1.16 driver: X:
loaded: modesetting alternate: fbdev,vesa
dri: radeonsi gpu: radeon display-ID: :0 screens: 1
Screen-1: 0 s-res: 640x480
s-size: <missing: xdpyinfo>
Monitor-1: HDMI-A-1 mapped: HDMI-1 pos: primary
model: Pro Capture serial: <filter> built: 2015
res: 640x480 dpi: 23 gamma: 1.2
size: 708x398mm (27.87x15.67") diag: 551mm (21.7")
ratio: 16:9 modes: max: 1920x1080 min: 640x350
Monitor-2: VGA-1 res: 640x480 size: N/A modes:
max: 1024x768 min: 640x480
API: EGL v: 1.5 hw: drv: amd radeonsi platforms:
device: 0 drv: radeonsi device: 1 drv: swrast gbm:
drv: kms_swrast surfaceless: drv: radeonsi x11:
drv: radeonsi inactive: wayland
API: OpenGL v: 4.5 vendor: amd mesa v: 24.2.8
glx-v: 1.4 direct-render: yes renderer: VERDE
(radeonsi LLVM 19.1.4 DRM 2.50 6.12.30-0-lts)
device-ID: 1002:683f memory: 1.95 GiB unified: no
user@tekobari:~$
~~~
my driver is listed as radeon. am i sure that i want the amdgpu manpage?
am i sure that i understand the manual? i expected the rotation to get me
TearFree output. could the tears be happening on m6? are there q3 configuration
options i'm neglecting?
yea i could use glxgears for testing instead
~~~bash
user@tekobari:~/Q3$ export vblank_mode=2
user@tekobari:~/Q3$ glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
~~~
lets incorporate that change to vblank_mode and try the first attempt again.
there i find that glx gears does not tear while quake does.
~~~quake
----- Initializing Renderer ----
-------------------------------
----- R_Init -----
SDL using driver "x11"
Initializing OpenGL display
...setting mode -2: 640 480
ATTENTION: default value of option vblank_mode overridden by environment.
Using 24 color bits, 24 depth, 8 stencil display.
Initializing OpenGL extensions
...using GL_EXT_texture_edge_clamp
...ignoring GL_EXT_texture_compression_s3tc
...using GL_EXT_texture_env_add
...using GL_ARB_multitexture
...using GL_EXT_compiled_vertex_array
...using GL_EXT_texture_filter_anisotropic (max: 16)
...using ARB vertex/fragment programs
...using ARB vertex buffer objects
...using 4x MSAA
...using GL_RGBA8 (GL_RGBA:GL_FLOAT) FBO
GL_VENDOR: AMD
GL_RENDERER: VERDE (radeonsi, , LLVM 19.1.4, DRM 2.50, 6.12.30-0-lts)
GL_VERSION: 4.5 (Compatibility Profile) Mesa 24.2.8
GL_MAX_TEXTURE_SIZE: 2048
GL_MAX_TEXTURE_UNITS_ARB: 8
PIXELFORMAT: color(24-bits) Z(24-bit) stencil(8-bits)
MODE: -2, 640 x 480 fullscreen hz:60
multitexture: enabled
compiled vertex arrays: enabled
texenv add: enabled
compressed textures: disabled
GAMMA: hardware w/ 0 overbright bits
texturemode: GL_LINEAR_MIPMAP_LINEAR
texture bits: 32
picmip: 0, worldspawn only
Initializing Shaders
----- finished R_Init -----
~~~
well my post processing is not too heavy with 4x MSAA. that's good to know i
guess. i don't see any GL_ usage relating to sync. and there are no such
functions defined for my renderer, which is q3e/code/renderer. This contrasts with the vulkan renderer
and renderer2 which is unmaintained. perhaps vsync is not implemented or
implemented differently for this backend.
for this engine i will try setting these to 1 and 60 instead of 0 and 0.
~~~quake
]\r_swapInterval
"r_swapInterval" is:"0^7" default:"0^7"
V-blanks to wait before swapping buffers.
0: No V-Sync
1: Synced to the monitor's refresh rate.
]\r_displayRefresh
"r_displayRefresh" is:"0^7" default:"0^7"
Override monitor refresh rate in fullscreen mode:
0 - use current monitor refresh rate
> 0 - use custom refresh rate
]
~~~
setting the display refresh was necessary to stop tearing in game
okay it's laggy as hell and unplayable and the video recording is upside down
but it does not tear. time to work back to a playable game. cool! maybe i'll
need the vulkan renderer. in the research phase here i needed something on my
quake engine or its renderers. noteworthy that it was only after 30 minutes that i realized i was
testing too narrowly such that i couldn't distinguish what the problem was. that
insight sufficed to progress the matter tonight but it is not done yet.
2025-08-08.1
i should be able to capture quake cleanly provided i understand xorg. I'll try.
2025-08-08
Something like three months ago I was fortunate to be able to watch Tron, the
well known 1980s film, for something like the first time. Music educator and
composer Robert Greenberg has it that all music can move us if we're open to
it and allow ourselves to be moved. The question is only whether or not we go
along and do that. For my part the score for Tron did not make this easy
as it aped too heavily what was already in my ear from John Williams; striking me
only as a thinner, theramineier, copy. Somehow in my mind it sounded worse for
the fact that whomever comissioned the original music could've comissioned it, presumably,
instead from Rush who we hear during the arcade sequence. I imagine they
would've delivered in spades.
I believe that the arcade sequence also features a world record run
which includes or foreshadows some game vehicles which return later, giant
flying M looking things. The gaming sequence is mostly interesting because of
how remarkly calm and staid and slow the game itself is. The context in the film
is that we're watching a world beating super talent in action and it is a
presumably up tempo kind of thing. But in 2025 it's almost laughably slow. I'd
say it is interesting and indicative of how gamers have gotten better and faster
over the generations, but i need to include a caveat for pinball. Pinball is in
that arcade and its action is quite hectic if not on camera. There's something of a novelty
effect with the digital game. Gamers and the audience's expectation of gamers
weren't merely slow, but this is what crossed my mind.
the overall vision of the film is dismal. what's the big idea here? some guy's
property rights. so long as they are respected it is happily ever after in the
endless concrete urban sprawl. is that what computation and competition are for?
there's a remarkable helicopter stunt at the end of the film where we see a
whirly bird blitz right up the side of sky scraper, come around hard, and swoop in
for a landing. as it lands our hero steps out and walks off into the
sunset with his two comrades, but not a one of them says a word about the death defying aerial
maneuver which has transpired. what? how does that make any sense at all? like, "hey why
did he just do that? are you okay?" or "i think you need a new pilot." instead
we hear nothing, which is the sound of an out of touch production company and cast.
2025-05-02
i fight for the user1!!
2025-03-29
it turned out to be the case that the poor performence of Q3 was only my
operating system performing poorly in generally. the fix was a new installation,
which is to say that there was no fix. i spent hours working through the
manuals for pidstat(1) sysstat(5) sadc(8) and running what were entirely
fruitless commands.
these utilities and their usage comprise a good chunk of the LPIC-2 course
materials, and i would say that a main idea of that certification is analyzing
system performance and performing diagnostics and investigations. i was happy
to get the reps in with these tools, but i must say, although i am not
a certified LPIC-2 administrator, this stuff is just worthless. the actual fix
was a fresh installation.
who could be bothered to have to reconfigure in this manner every year or two?
for me it only indicates that i'll be giving up on some things sooner rather
than later and that i had better be comfortable with that. i would
like to show 5 games on userland.lol. with the overhead being what it is, i'm
guessing that two games or three might be what ends up as reasonable.
this of course suggests that 0 games is reasonable. i'll try to enjoy it while
it lasts :D
2025-03-08
I am alive, and have opted to try and reduce pulseaudio latency when i stand up
my stream via a script:
- https://git.ultrono.com/user472393/userland-stream/-/blob/master/bin/pulse-latency
I'm probably not able to emit a high quality quake stream given my hardware.
When I capture output on a separate PC, the progressive signal shreds the
screen into strips; ripping and tearing the image. I can't effect the necessary
configuration with nvidia to prevent this.
When i record on the gaming pc itself, i'm liable to repeatedly time out from
the server. I'm not sure what's up with that. At a glance my system looks
performant. It's a game from the last millenium. what's up with that not running
alongside obs?
~~~
inxi -GSaz
System:
Kernel: 6.1.0-31-amd64 arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
parameters: BOOT_IMAGE=/boot/vmlinuz-6.1.0-31-amd64
Desktop: i3 v: 4.22 info: i3bar vt: 7 dm: SLiM v: 1.4.0 Distro: Devuan
GNU/Linux 5 (daedalus)
Graphics:
Device-1: Intel HD Graphics 630 vendor: Gigabyte driver: i915 v: kernel
arch: Gen-9.5 process: Intel 14nm built: 2016-20 ports: active: none
empty: DP-1, HDMI-A-1, HDMI-A-2, HDMI-A-3 bus-ID: 00:02.0
chip-ID: 8086:5912 class-ID: 0380
Device-2: NVIDIA GM107 [GeForce GTX 750 Ti] vendor: Gigabyte
driver: nvidia v: 535.216.01 non-free: 530.xx+
status: current (as of 2023-03) arch: Maxwell code: GMxxx
process: TSMC 28nm built: 2014-19 pcie: gen: 1 speed: 2.5 GT/s lanes: 16
link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.0 chip-ID: 10de:1380
class-ID: 0300
Device-3: Nanjing Magewell vendor: SafeNet driver: Pro Capture v: N/A
alternate: ProCapture pcie: gen: 2 speed: 5 GT/s lanes: 1 bus-ID: 06:00.0
chip-ID: 1cd7:0004 class-ID: 0400
Device-4: Logitech HD Pro Webcam C920 type: USB
driver: snd-usb-audio,uvcvideo bus-ID: 1-1:2 chip-ID: 046d:082d
class-ID: 0102 serial: <filter>
Display: x11 server: X.Org v: 1.21.1.7 driver: X: loaded: nvidia
gpu: i915,nvidia,Pro Capture display-ID: :0.0 screens: 1
Screen-1: 0 s-res: 1600x1200 s-dpi: 203 s-size: 200x150mm (7.87x5.91")
s-diag: 250mm (9.84")
Monitor-1: DVI-I-0 pos: primary
res: 640x480 hz: 150 dpi: 46
size: 350x260mm (13.78x10.24")
diag: 436mm (17.17") modes: N/A
Monitor-1: DVI-I-0 pos: primary res: 1600x1200 hz: 75 dpi: 115
size: 352x264mm (13.86x10.39") diag: 440mm (17.32") modes: N/A
Monitor-2: HDMI-1 size-res: N/A modes: N/A
API: OpenGL v: 4.6.0 NVIDIA 535.216.01 renderer: NVIDIA GeForce GTX 750
Ti/PCIe/SSE2 direct-render: Yes
~~~
2025-02-23
usb soundcard and pulseaudio are not naively great for gaming
here are some notes on how to improve things
we are starting with a latency of around 36ms
~~~
$ pactl list sinks | grep -i latency
Latency: 36460 usec, configured 24988 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS
~~~
and here is the module in question
~~~
$ pactl list modules
...
Module #52
Name: module-alsa-card
Argument: device_id="4" name="usb-E-MU_Systems__Inc._E-MU_0404___USB_E-MU-AE-3F04-07D70A01-01D2B-STATION_02-00" card_name="alsa_card.usb-E-MU_Systems__Inc._E-MU_0404___USB_E-MU-AE-3F04-07D70A01-01D2B-STATION_02-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
Usage counter: 6
Properties:
module.author = "Lennart Poettering"
module.description = "ALSA Card"
module.version = "16.1"
~~~
these commands have been taken from juho's blogpost
https://juho.tykkala.fi/Pulseaudio-and-latency#positive-effect-on-latency
lets keep following the steps outlined there and run some more commands
~~~
$ pactl unload-module 52
$ pactl load-module module-alsa-card \
device_id="4" \
name="usb-E-MU_Systems__Inc._E-MU_0404___USB_E-MU-AE-3F04-07D70A01-01D2B-STATION_02-00" \
card_name="alsa_card.usb-E-MU_Systems__Inc._E-MU_0404___USB_E-MU-AE-3F04-07D70A01-01D2B-STATION_02-00" \
namereg_fail=false \
tsched=no \
fixed_latency_range=yes \
ignore_dB=no \
deferred_volume=yes \
use_ucm=yes \
avoid_resampling=yes \
card_properties="module-udev-detect.discovered=1" \
fragments=1 \
fragment_size=15
~~~
and we end up with a latency of about 2ms. nice!
~~~
$ pactl list sinks | grep Latency
Latency: 2267 usec, configured 1043 usec
~~~
now how can this be made to persist? how about for a different pulse setup? we'll have to see
2025-02-02
i played about 10 tgm games, and in that time 2 sections were okay
where okay means not too unskillful
there were some surprising failure in ta death
why or how i would be surprised about something that happens all the time i do
not know
i played a game of broodwar where i was defeated for want of vision of the
terran natural
all of the games were really too much opponent not enough user
2025-01-27
i was lucky to be able to get a couple of games in after work this day.
at my present skill it is sufficiently difficult to control workers in the
opening minutes such that i am unable to reliably implement plans of any detail.
this is on display in the first game of the night, where it's just too hard to get an overlord at 9 supply.
i was glad to not have thrown my army away, but stopped expanding after 20 minutes.
the second game of the night i probed with lurkers and that was sufficient
agression to win sufficed to win. however, i have lost several games recently by
probing in exactly that same way and losing my only defense. i have some notion
of rebuilding defense at that point, but only dimly. it's a common failure in my
play that i have absolutely no defense, and i want to avoid that.
thanks to those players for those games!