Spearmint – Clover.moe https://clover.moe Sat, 05 Oct 2024 01:30:12 +0000 en-US hourly 1 https://wordpress.org/?v=6.6.2 https://clover.moe/wp-content/uploads/2016/04/20151213_Clover_favicon-150x150.png Spearmint – Clover.moe https://clover.moe 32 32 Open Source Status https://clover.moe/2024/10/01/open-source-status/ Tue, 01 Oct 2024 07:26:41 +0000 https://clover.moe/?p=1855 I’m going to do my own things in my own time rather than acting as an open source software maintainer.

I’ve completed most of the things I want to do in my open source projects (Spearmint, Maverick, etc). There was of course a lot of other ideas and many are now redirected at Clover’s Toy Box. At this point I mainly work on Maverick and Quake 3 related open source projects for the sake of other people. While I like assisting, it’s not satisfying and can be stressful.

I’m withdrawing from providing user support and fulfilling requests for open source projects. I’m not interested in continuing to discuss these projects. I’ve made the Clover.moe Community Discord server be read-only after giving a month notice. I’ve thought about this for some time; I decided to do this in March.

I will continue to contribute to Quake 3 open source projects if it’s something I personally want. There is still a few loose ends I want to deal with and I may find other things in the future. So it’s not entirely the end of me working on these projects.

]]>
Open Source in 2023 https://clover.moe/2024/01/02/open-source-in-2023/ Wed, 03 Jan 2024 02:59:06 +0000 https://clover.moe/?p=1582 My open source software contributions in 2023 to SDL, Quake 3 based games, and Maverick Model 3D.

SDL

Simple DirectMedia Layer is a cross-platform abstraction layer for window creation, graphics initialize, audio, input, etc that is used by most games on Linux. (SDL source code)

I mentioned custom window decoration “hit testing” resizing issues at the end of my Toy Box on Wayland post. Someone fixed Linux (X11 and Wayland) to display cursors when hovering over resizable areas. It assumed the cursors were double arrows like on Windows and KDE. Resize left and right both had a single arrow pointing right on GNOME. I fixed it to have the correct cursors on GNOME using 8 cursors with each resize direction.

I helped explain an issue with Nintendo GameCube Adapter controller mapping so it could be fixed on Windows and Android.

I try to read most of the SDL 3 commits by following an RSS feed. I pointed out a few minor issues as commit comments.

ioquake3

ioquake3 is a project to maintain and extend the source code for the 1999 first-person shooter Quake III Arena. (ioq3 source code)

I made 25 posts to help solve issues on the ioquake3 forum.

Platform

I updated SDL libraries for Windows and macOS from SDL 2.0.14 to SDL 2.24.0. I cross-compiled mingw-w64 and macOS libraries on Linux. I did have to use Windows to build the MSVC libraries.

I made it so macOS can be built separate for “legacy” Universal Bundle (x86/x86_64/powerpc) and “modern” Universal Bundle 2 (x86_64/Apple Sillicon). Legacy macOS App Bundle was updated to SDL 2.0.22 as newer versions (jumping to SDL 2.24.0) dropped support for macOS 10.6. (Building for Apple Sillicon was added by Tom Kidd in 2022.)

I fixed ioquake3 failing to start from macOS terminal due to how the URI scheme handler support was added.

I updated the Windows “NSIS installer” script. ioquake3 and games based on it tend to just use a .zip file instead of an installer. It would be useful to use the installer as it adds integration for the “quake3://connect/127.0.0.1” URI scheme handler to Windows.

QVM

QVM (Quake Virtual Machine) is a cross-platform bytecode format used by Quake 3 that allows game modifications to be compiled on one platform and run on all platforms. (A similar recent technology being WebAssembly.)

I fixed compiling QVMs on Linux if the source code has Windows line endings. MS-DOS used CR+LF to end lines in text files (Carriage return, line feed; commands for a text printer). However Unix-like platforms used only LF. The Windows file API in text mode automatically reads CR+LF as LF but other platforms did not and caused the QVM tools to fail with strange syntax errors.

I made it so QVMs are compiled on all platforms by default even if they do not have a run-time QVM just-in-time compiler. The QVM interpreter works on all platforms. This made QVMs be built on Linux/macOS ARM64 by default.

OpenGL2 renderer

Compared to the opengl1 renderer—which closely resembles the original Quake 3 renderer—the ioquake3 OpenGL2 render has a lot of issues and (in my opinion) poor design decisions. I think it’s too much work to fix it. However when prompted about issues, it’s not that I can’t fix them


I fixed the edge border for smaller view size (cg_viewsize) being drawn to an framebuffer object and not blit to the screen when using HDR or framebuffer multisample anti-alias with post-process. This was fixed to draw to the screen directly like other 2D drawing.

I fixed updating the loading screen with r_cubeMapping 1. The changes for the previous issue caused Quake 3’s drawing all images to the screen—to ensure the driver loads them—to be visible. However it shouldn’t be visible because the loading screen draws over it. It turns out generating cube maps for the level left the culling state set to hiding the front of polygons and the loading screen was culled until the level is loaded to reset the culling state. This was broken for years but it seemed like it was just really fast after loading the level.

I fixed the developer option to clear the screen to magenta (r_clear 1) before rendering when using HDR or framebuffer multisample anti-alias. This makes it obvious when some part of the screen isn’t drawn or is transparent and the previous frame is visible (hall of mirrors effect or random flashing between two different frames; it’s just bad).

I fixed framebuffer multisample anti-alias on AMD Windows driver. The driver incorrectly requires GL_EXT_direct_state_access extension to bind a renderbuffer for it to be valid. This should only be required for OpenGL Core context direct state access or GL_ARB_direct_state_access extension. Though yes, ioquake3 should probably stop using the EXT extension in an OpenGL Core context.

I fixed q3map2 lightstyles effects for dynamic pulsing lightmaps with r_mergeLightmaps 1 and r_sunlightMode 1.

r_mergeLightmaps 1 combines internal 128×128 pixel lightmaps into a larger atlas and modifies the geometry texture concordances. This broke materials using both internal and external lightmap and materials using texture concordance offset with internal lightmaps (two obscure things I didn’t know q3map2 did). I corrected external lightmap to apply a transform to convert the texture concordances back to the original and made offset for internal lightmaps use the scale of the texture atlas.

r_sunlightMode 1 changed lightmap stages in materials to support cascading sun shadows by using white image modulated by the lightmap texture. However it didn’t work with some blend mode that use the alpha of the lightmap texture. I fixed it to only apply to normal lightmap stage blend modes.

I fixed parsing q3gl2_sun without two additional “optional” tokens. Quake 3’s text parser has an option to not allow line breaks but it still sets the text pointer to after the line break. So effectively it can only check for an optional token once. And then must not check for any more because it will be on the next line. I fixed parsing q3gl_sun to only check for additional optional tokens if the previous optional tokens existed. (I previously fixed the parser in Spearmint to stop at end of line so it doesn’t have this problem but I’m more concerned about compatibility with weird content in ioquake3.)

World of Padman

World of Padman is a freeware first-person shooter based on the ioquake3 engine. (WoP source code)

My widescreen HUD support from “ZTM’s Flexible HUD for ioq3” was merged into World of Padman for version 1.7. I helped fix two widescreen issues with health station icons (distance independent 2D sprites on the HUD) and lens flares.

Some of the OpenGL2 renderer changes in ioquake3 were for World of Padman or at request of one of the World of Padman developers. q3map2 lightstyles effects are used by the wop_trashmap level.

Q3Rally

Q3Rally is a freeware racing and third-person car shooter based on the ioquake3 engine. (Q3Rally source code)

Some changes I made include:

  • Bots can drive around more race maps now (“Fix bots going in reverse for no reason in races”)
  • Fixed spectator observer camera to rotate smoothly
  • Fixed intermission view angles
  • Fixed players in race have an invisible chainsaw
  • Fixed client error dropping to menu when player dies if sv_maxclients is too high (“Fix out of range death events”)
  • Updated to latest ioquake3
  • Various other bug fixes

I fixed game network compatibility and enabled ARM64 support for the new Q3Rally Flatpak package for Linux.

Spearmint

Spearmint is my enhanced engine and game-logic based on ioquake3. (engine source code, game-logic source code)

opengl1 renderer

I fixed two issues in the opengl1 renderer due to adding changes from Wolfenstein: Enemy Territory.

Wolfenstein: Enemy Territory added far plane culling. The level BSP node bounds doesn’t include surfaces for q3map2 skybox portal hack (_skybox entity) so the far plane wasn’t set far enough and the skybox scene was cut off. Instead the bounds of surfaces in the BSP node should be used, which Wolfenstein: Enemy Territory also added.

Wolfenstein: Enemy Territory fixed surface culling for two sided level surfaces but this broke snow flakes in rgoer_seasons user created level for Quake 3 using “deformVertexes move” material feature to change the surface position. I changed back to Quake 3 behavior of not using exact view culling for two sided surfaces.

OpenGL2 renderer

I fixed bullet/explosion marks on doors and moving platforms in splitscreen player views. (It was pointed out to me that I fixed this in opengl1 years ago but I forgot to apply it to the OpenGL2 renderer.)

Game-Logic

I added an option to disable view kick when receiving damage.

I added setting the frame rate in the graphics options menu.

Maverick Model 3D

Maverick Model 3D is a 3D model editor and animator that I maintain that supports some game specific formats. It’s based on Misfit Model 3D that ceased development. (Maverick source code)

I developed/released Maverick Model 3D 1.3.14 in April.

In addition to that:

I fixed a couple issues for macOS and made GitHub Actions build and upload macOS build. If you’re logged into to GitHub, the macOS build can be downloaded from the bottom of the “Actions summary” page for each commit. I haven’t tested it as it requires newer macOS than I have access to.

I fixed a couple issues that I found through the Debian package tracker several years ago. CXXFLAGS are now respected by configure and it compiles for GNU Hurd. Though OpenGL—required for displaying the model—didn’t work in the Debian 2023 GNU Hurd virtual machine image.

I added support for exporting a Quake 3 player model with three separate models (head, upper, lower) to IQE format which can be converted to IQM for use with ioquake3 and derivative projects.

IQM uses skeletal animation which allows for less memory usage and better animation quality compared to Quake 3’s MD3 format that stores lower precision vertex positions for each frame and interpolates vertexes in a straight line between frames which may cause meshes to deform. Though IQM may be slower to draw.

I got IQE Quake 3 player model export working in 2018 (as reference in this ioquake3 forum thread where I was working on improving performance and fixing issues with ioquake3’s IQM support). I wanted to move Quake 3 player model export out on the individual format exporters but that never happened. So now it’s in IQE exporter.

P.S.

Most of these changes are a result of interacting with people rather than my own ideas or done for the sake of hypothetical other people.

If you found this useful, consider donating on Ko-fi (no account required).

]]>
Spearmint 1.0.3 released https://clover.moe/2020/07/10/spearmint-1-0-3-released/ Fri, 10 Jul 2020 23:15:50 +0000 https://clover.moe/?p=1273 Spearmint 1.0.3 fixes a couple issues in Team Arena and a few other obscure issues. Download it at https://clover.moe/spearmint.

The Team Arena non-functional settings issue is important (though it was unnoticed since I broke it in 2014). I think the rest of the issues are kind of obscure to run into. It’s not urgent to update dedicated servers since the only change is the server full message.

Changes

Engine (spearmint)

Server

  • Fix local human player not being able to join server full of bots (possible with Team Arena start server menu). Reported by Tobias Kuehnhammer, probably.
  • Display “Server is full.” message (like original Quake 3) to network players instead of “Couldn’t add local player 1, no free player slots!”.

Client

  • Fix crash when r_flares cvar is 2 or 3 in Team Arena Single Player Tournament menu. Reported by Tobias Kuehnhammer.
  • Fix shader sort value for unknown keyword. (Fixes Unholy Sanctuary “us_intro” map.) Reported by Tobias Kuehnhammer.

Game Logic (mint-arena)

UI

  • Fix not being able to change engine latch cvars (sv_maxclients, r_mode, and several other rendering settings) in Team Arena menu. Reported by Tobias Kuehnhammer.
  • Fix player effects color on player models with rgbGen entity for local player 2, 3, and 4 in Q3 menu. Reported by ZaRR.
  • Fix compiling Team Arena with q3_ui. Reported by retro8x.

]]>
Spearmint 1.0.2 released https://clover.moe/2019/11/03/spearmint-1-0-2-released/ https://clover.moe/2019/11/03/spearmint-1-0-2-released/#comments Sun, 03 Nov 2019 22:50:54 +0000 https://clover.moe/?p=1234 Spearmint 1.0.2 fixes IQM player models, using TrueType console font, and some other issues. Download it at https://clover.moe/spearmint.

There are a few bug fixes for things could be used by server game mods (listed under common) but none are used by Spearmint Quake 3 / Team Arena servers.

Changes

Engine (spearmint)

Common

  • Fix filename tab-completion without a specified directory. It affected music, play, and testmodel commands.
  • Fix IQM with no frames crashing R_ModelBounds(). It happened with IQM player head models.

Client

  • Add workaround for client error when using HTTP download. Reported by mecwerks.
  • Fix rendering IQM models between model frames.
  • OpenGL2: Fix cg_fadeExplosions when r_dlightMode is enabled.
  • OpenGL2: Fix DDS loading when GL_EXT_direct_state_access is supported.
  • Fix game resolution when compiled against macOS 10.15 SDK (by Ryan C. Gordon and patch by Tom Kidd).

Game Logic (mint-arena)

Common

  • Fix QVM printf %g trailing zero removal.

CGame

  • Change console to use “LiberationMono-Regular.ttf” TrueType font included with Spearmint 1.0.0. Previously the “LiberationMono-Bold.ttf” font was not found and the console would fallback to using the original Quake 3 bitmap console font.
  • Fix third person lightning bolt when missing Lightning Gun weapon model.
  • Fix lightning bolt being fired from corpses. Corpses didn’t have a weapon model and checked the living player to see if lightning bolt should be drawn. Reported by ZaRR.

UI

  • Fix keyboard selection order for “joystick analog” option in Quake 3 controls menu.
  • Fix Quake 3 team orders menu not listing bots that joined before you.
]]>
https://clover.moe/2019/11/03/spearmint-1-0-2-released/feed/ 7
Spearmint 1.0.1 released https://clover.moe/2018/11/15/spearmint-1-0-1-released/ Fri, 16 Nov 2018 01:48:20 +0000 https://clover.moe/?p=1133 Spearmint 1.0.1 fixes a few minor issues.

Server

  • Fix kicked clients displaying ‘connection interrupted’ instead of exiting to menu and displaying kick reason.

CGame (Team Arena)

  • Fix changing Team Arena statusbar (normal or small) in menu while in-game not applying widescreen adjustments for power ups area and voice chat head.
  • Make Team Arena prevTeamMember command loop around player list.
  • Fix drawing Team Arena HUD team member info for ‘everyone’ (reported by DarkPatro56 on YouTube).

Game (Team Arena)

  • Fix Team Arena voice taunt not being sent if speaking to a bot (reported by DarkPatro56 on YouTube).

See https://clover.moe/spearmint for downloads.

]]>
Spearmint 1.0.0 released https://clover.moe/2018/10/10/spearmint-1-0-0-released/ https://clover.moe/2018/10/10/spearmint-1-0-0-released/#comments Wed, 10 Oct 2018 13:34:26 +0000 https://clover.moe/?p=1120 Spearmint 1.0.0 has many minor attention-to-detail improvements. The most interesting changes being:

  • Console command argument auto completion for model and headmodel and 25 other commands.
  • Random bots added in Quake III: Team Arena team gametypes using bot_minplayers or addbot random use Team Arena’s characters instead of Quake 3’s bots.
  • Bug fixes and performance improvements for IQM models.

See https://clover.moe/spearmint for downloads.

Spearmint 1.0.0 is not backward compatible with previous network protocol or VMs. If you extract this over a previous version, you need to manually remove spearmint-patch-0.x.pk3 files from the baseq3 and missionpack directories. (New files are named to spearmint-baseq3-1.0.0.pk3 and spearmint-missionpack-1.0.0.pk3.)

The version 1.0.0 is major, minor, patch. 0.6 and earlier should of had a “.0” at the end for patch version.

Known issues; On Windows the keypad 5 key without numlock doesn’t work and macOS 10.6+ only execute mouse wheel control binds if wheel is turned multiple notches (SDL 2.0.8 bugs).

macOS 10.5 / PPC lost support for gamecontrollerdb.txt (requires SDL 2.0.2). macOS PPC build was downgraded from SDL 2.0.3 to SDL 2.0.1 (the last SDL version to officially support macOS PPC). macOS 10.5 now runs the PPC build via Rosette (SDL 2.0.5 dropped macOS 10.5 support).

Future

This release marks the end of 10 years of Spearmint development. There may be updates to fix issues that are reported (and the macOS mouse wheel) but I’m not planning to continue general devil-op-mint.

Changes

Lines beginning with “ioq3:” were also fixed in ioquake3.

CGame VM

  • Move map restart FIGHT message higher in non-splitscreen to match the original Quake 3 behavior (reported by ZaRR).
  • Add command argument auto completion for callteamvote, callvote, follow, give, headmodel, model, team, team_headmodel, team_model, teamvote, tell, testgun, testmodel, and vote. Team Arena exclusive: vosay, vosay_team, votell, vsay, vsay_team, vtell, vtell_attacker, and vtell_target.
  • Increase tell_target and tell_attacker commands’ message size from 120 to 150 (max for regular tell command)
  • Use fractional digits in cg_fov and cg_weaponFov cvars.
  • Fix dedicated console with third party transparent console background drawing over the previous frame (ghosting looking effect).
  • Quake 3: Replace control menu’s reset cvar to get it’s default hack with new system call trap_Cvar_DefaultVariableStringBuffer().
  • Quake 3: Make single player tiers “X arenas ignored to make count divisible by 4” console message be developer only.
  • Team Arena: Add “Random” bot to start server and in-game menus.
  • Team Arena: Fix clearing control bind in menu only affecting the displayed menu and not the actually binds.
  • Team Arena: Make scrolling in-game spectator list be smoother (broke in Spearmint 0.5).
  • Team Arena: Fix unable to type in console when missing menu data files.
  • ioq3: Make testgun command without argument disable test gun model.
  • ioq3: Fix predicting player origin on rotating platforms in third party maps (reported by kungfooman).

Game VM

  • Add capturelimit and g_instagib to callvote command.
  • Add sanity checks for callvote argument, including checking if map exists before starting vote.
  • Add command argument auto completion for addbot, forceTeam, teleport, and (dedicated server) tell.
  • Print log messages for callvote and votes cast, also printed to server console!
  • Fix occasional bot “max chatstate console messages reached” error in team gametypes with 64 players on map restart (reported by Tobias Kuehnhammer).
  • Remove -debug from end of gameversion cvar value in release build of game.qvm.
  • Team Arena: Make bot_minplayers cvar and addbot random command add Team Arena characters in team gametypes.
  • ioq3: Fix dedicated camera followers (team follow1/team follow2) displaying “Connection Interrupted” when there are no players to follow.
  • ioq3: Improve logic for finding Team Arena obelisk entities (reported by Thomas Köppe).

Engine

  • Separate left and right ALT, CTRL, SHIFT, WINDOWS, and COMMAND keys (with support for the original “bind SHIFT +speed” to affect both LEFTSHIFT and RIGHTSHIFT keys). Though this does break moving Spearmint binds config to vanilla Quake 3 or ioquake3.
  • Add mouse wheel left and right keys (MWHEELLEFT, MWHEELRIGHT).
  • Add 161 more ‘world keys’ to cover (I think) all USB keyboard scan codes of unknown keys (WORLD95 to WORLD255).
  • Add trap_Cvar_DefaultVariableStringBuffer() to allow Game/CGame VMs to get a cvar’s default value.
  • Fix auto completing filenames more than 2 directories deep in console (required for testmodel and testgun commands).
  • Remove botlib line from meminfo command output. It was always 0 due to moving botlib into Game VM.
  • ioq3: Add support for WASAPI audio API on Windows via SDL (by Ryan C. Gordon).
  • ioq3: Add audio capture using SDL (by Ryan C. Gordon).
  • ioq3: Update from SDL 2.0.4 to 2.0.8 (by MAN-AT-ARMS and excessive work to keep macOS 10.5 support by zturtleman).
  • ioq3: Make s_useOpenAL cvar say it requires restart when changed.
  • ioq3: Fix parsing OpenGL2 renderer’s specularScale in third party shaders.
  • ioq3: Readd r_deluxeSpecular cvar to OpenGL2 renderer (by SmileTheory).
  • ioq3: Fix client not downloading the the latest cgame pk3.
  • ioq3: Some minor improvements to the opengl renderers.
  • ioq3: Fix IQM models with multiple root joints.
  • ioq3: Fix IQM models that have a base skeleton with rotated joints.
  • ioq3: Fix culling unanimated IQM models not using model bounds.
  • ioq3: Improve IQM rendering performance.
]]>
https://clover.moe/2018/10/10/spearmint-1-0-0-released/feed/ 2
10 Years of Quake 3 https://clover.moe/2018/09/19/10-years-of-quake-3/ https://clover.moe/2018/09/19/10-years-of-quake-3/#comments Wed, 19 Sep 2018 05:00:21 +0000 https://clover.moe/?p=1060
Lycoris radiata
Red spider lily, licensed as CC-BY-SA 4.0 by Kakidai.

October 10th 2018 is the 10 year anniversary of when I started modding ioquake3. It was my third attempt at creating a Ninja Turtle fangame within a three year time period. I intend to release Spearmint 1.0 as the end result of 10 years of working on the Quake 3 engine.

On October 10th I’m planning to cease development on my projects based on the Quake 3 engine (Spearmint, Turtle Arena, Lilium Voyager, flexible HUD mod for ioq3, …) and resign from being a ioquake3 maintainer (since 2011). I’ll no longer be following ioquake3 development or providing support on the ioquake3 forum.

I don’t have a special interest in playing any of the games based on the Quake 3 engine and as of 2016 I’m no longer planning to use Spearmint for future game development. There is no actual reason for me to continue working on Spearmint and ioquake3. The main draw to continue is simply that someone should do it and I’m knowledgeable on the subject.

I’m pretty satisfied with the state of features and improvements that I’ve completed over the last 10 years. Of course there is still many things left that could be done; I just don’t care to continue working on the Quake 3 engine and I’m tired of the pressure I apply to myself to work on it.

I haven’t decided what I’m going to be doing with game/software development in the future. I may continue working at a slow pace on my new game/engine project Clover’s Toy Box which I’ve moved to private development. I may work on other art or projects instead.

If you appreciate my work on ioquake3 or Spearmint you could donate to me using PayPal via Ko-fi.com (no account required).

spearmint.pw domain name expires in a few hours. RIP 2013 – 2018.

]]>
https://clover.moe/2018/09/19/10-years-of-quake-3/feed/ 7
clover.moe Spearmint game server shutdown https://clover.moe/2018/08/13/spearmint-game-server-shutdown/ Tue, 14 Aug 2018 02:13:03 +0000 https://clover.moe/?p=1048 I’ve disabled my Spearmint game server (saturn.clover.moe) to reduce expenses. I expect to re-enable it in a few months. There is currently still another Spearmint server running. The master servers hosted by ioquake3.org and deathmask.net continue to be available.

The Magical Clover Forum (Discourse software, forum.clover.moe) is now archived. It’s not the prettiest or most accurate but the post content continues to be available. It’s was downloaded using “httrack https://forum.clover.moe”.

]]>
Spearmint 0.6 released https://clover.moe/2018/04/13/spearmint-0-6-released/ Fri, 13 Apr 2018 09:39:21 +0000 https://clover.moe/?p=993 Spearmint 0.6 adds InstaGib mode, MP3 support, customize-able console font size, and fixes a Windows remote code execution exploit. See https://clover.moe/spearmint for downloads.

Reminder: The Spearmint website has moved from spearmint.pw to clover.moe/spearmint.

Spearmint 0.6 is released on the 6 year anniversary of Turtle Arena 0.6 (April 13 2012) — the first of my Friday the 13th release dates. 666 book-ended by Friday the 13ths with the main Turtle Arena development occurring in the proceeding 42 months. This the final 0.x release and end of the Friday the 13th release date targets. The next release will be 1.0 on October 10 2018; the 10 year anniversary of Spearmint/Turtle Arena development.

Spearmint 0.6 is backward compatible with Spearmint 0.5 network protocol and VMs.

There was an exploit for remote code execution on Windows clients with downloads enabled or manually installing a pk3 containing a malicious vm/mint-cgame.qvm (quake virtual machine byte-code). CGame QVM could write a file named “mint-cgamex86.dll.” and Windows API would silently drop the trailing period.  Then the CGame QVM could run the commands vm_cgame 0; vid_restart; to run the mint-cgamex86.dll it wrote. Enabling downloads is not recommended as QVMs are still insecure. The exploit was reported to The ioquake3 Group by Chomenor.

Lines beginning with “ioq3:” were also fixed in ioquake3.

Engine

  • Add MP3 playback support using libmad and Thilo Schulz’s mp3 patch for ioquake3.
  • Allow loading unzipped .txt files when connected to a pure server. (Reported by mecwerks)
  • Fix out of memory error when loading levels such as Team Arena’s mpterra2 (Distant Screams) by increasing vm_gameHeapMegs cvar to 24. (Reported by xesarni and ZaRR)
  • Out of memory errors now report which console variable needs to be increased.
  • Disable saving player’s real name (operating system user account name) in PNG screenshots. (Suggested by robo9k)
  • Add versionshort cvar that unlike version cvar does not contain the platform. If has the git build version, the date is left out too. It’s displayed in the console by CGame VM.
  • ioq3: Enabled compiler optimization for macOS x86 and x86_64. It seems to improve performance.
  • ioq3: Fix not being able to load system OpenAL library on macOS. (Reported by pragmader)
  • ioq3: Support Unicode character hex values greater than 0xFF in cl_consoleKeys. (Fixed by MAN-AT-ARMS)
  • ioq3: Fix possible crash if gamestate contains 8191-chars long configstrings. (Fixed by Eugene C.)

Engine (Exploits-related)

  • Fix VMs being able to immediately change value of an engine latch cvar. (Reported by Chomenor)
  • ioq3: Fix remote code execution on Windows when cl_allowDownload is enabled. (Reported by Chomenor)
  • ioq3: Fix string buffers formatted using Q_vsnprintf on Windows possibly not being terminated resulting in out-of-bounds memory access. (Reported by birdstakes)
  • ioq3: Fix exploit to reset player by sending wrong serverId. (Reported by Ensiform)
  • ioq3: Fix VMs being able to change CVAR_PROTECTED cvars. (Reported by Chomenor)
  • ioq3: Fix fs_game “..” reading outside of home and base path. (Reported by Chomenor)
  • ioq3: Update libvorbis to 1.3.6 to fix CVE-2018-5146, CVE-2017-14633, and CVE-2017-14632.

Renderers

  • Fix crash when running shaderlist command.
  • Support Quake Live’s “depthTest disable” and “novlcollapse” shader keywords.
  • Misc fixes for DDS picmip and r_picmip2.
  • Fix picmip not being applied in OpenGL2 renderer.
  • Don’t load detail textures if they are disabled.
  • Made r_detailtextures 2 use nopicmip for detail textures.
  • Fix Wolfenstein: Enemy Territory foliage in OpenGL1 on Intel macOS and non-macOS big-endian platforms.
  • ioq3: Fix dark lightmap on shader in Team Arena’s mpteam6 level in the OpenGL2 renderer. (Reported by wareya)
  • ioq3: Fix OpenGL2 renderer crash when BSP has deluxe maps and vertex lit surfaces. (Reported by mickael9)
  • ioq3: Fix r_fullbright 1 allowed when cheats are disabled. (Fixed by IR4T4)

VM Common

  • Add cgameversion and gameversion cvars with name, version, and date like main engine version cvar. Old gameversion cvar (value: “baseq3-4”) was renamed to gameprotocol.

Game VM

  • Add InstaGib mode (players have railgun and gauntlet, no level items) for all gametypes. Enable it in the start server menu or set g_instagib cvar to 1. (Requested by myuu on Steam)
  • ioq3: Fix multiplayer vote to use a negative or very large fraglimit or timelimit causing level to continuously restart. (Based on patch by vloup)
  • ioq3: Fix invalid access to cluster 0 in AAS_AreaRouteToGoalArea(). (Reported by Thomas Köppe)

CGame VM

  • Gametype name is now displayed on the scoreboard.
  • Add cg_consoleFontSize cvar to allow changing the console font size. It’s now smaller by default to be more similar to Quake3. Set cg_consoleFontSize to 16 for the size in previous Spearmint versions. (Requested by Calinou)
  • Display cgame version in console in addition to the engine version.
  • Changed website URL in menu to clover.moe/spearmint.
  • Don’t draw ammo warning when spectating and following player (player name is drawn over it).
  • Fix fraglimit and timelimit in Team Arena start server menu being blank on first run. (Reported by Tobias Kuehnhammer)
  • ioq3: Support more addon levels. Increased scripts/*.arena limit to allow about 273 files. (Requested by nonickname)
  • ioq3: Restore Color Depth option in setup -> system -> graphics menu. 16-bit probably doesn’t work, see graphics -> driver info menu for used values.
  • ioq3: Fix -1 (unlimited) ammo decreasing estimated ammo time remaining.
  • ioq3: Fix Team Arena server browser refresh time format (minutes less than 10 start with 0 now, 7:1 -> 7:01).
  • ioq3: Fix invalid model frame developer warnings for Team Arena holdable medkit and invulnerability effects.
  • ioq3: Fix map list in Team Arena start server menu only showing single player maps after previously entering single player menu.
  • ioq3: Fix out-of-bounds access when loading baseq3/consolehistory.dat file that is 1024 bytes. (Reported by devnexen)
]]>
Website Address Changes https://clover.moe/2018/01/31/website-address-changes/ Wed, 31 Jan 2018 16:42:44 +0000 https://clover.moe/?p=955 The following websites have a new address. The domain names should redirect to the new location until they expire. I don’t plan to renew the domain names. (spearmint.pw should become a redirect in the next two days when the DNS updates.)

For reference, clover.moe was registered on March 24 2016. I probably would not have registered the others if I had an actual main domain name instead of ztm.x10host.com. Having many domain names is kind of an unnecessary expense.

The following redirects are going to be removed after March 24 2018. Might as well break all links at once.

  • chat.clover.moe -> forum.clover.moe
  • ztm.x10host.com/ta/ -> turtlearena.com

spearmint.pw meant Spearmint Powered. It was inspired on the Powered by Quake III logo featured on some game cases. The idea was that if someone made a game based on Spearmint, they link to Spearmint.Pw. I never got around to making a parody logo for it though. Also, Hatsune Miku on the Spearmint website since 2014 is a place holder for Clover who I have yet to actually design.

]]>
Spearmint 0.5 released https://clover.moe/2017/10/13/spearmint-0-5-released/ https://clover.moe/2017/10/13/spearmint-0-5-released/#comments Fri, 13 Oct 2017 12:45:13 +0000 https://clover.moe/?p=933 Spearmint 0.5 focused on text quality, multi-game support, and improving the user experience. See https://clover.moe/spearmint for downloads.

Spearmint 0.5 uses Liberation Sans/Mono TrueType fonts by default as a replacement for Quake 3’s gfx/2d/bigchars.tga and Team Arena’s fonts. The HUD fonts have a black outline for improved visibility. Work on this started in 2011. See the readme on the Spearmint website for font configuration documentation.

Spearmint 0.5 introduces support for playing the demo versions of Quake 3 and Team Arena and OpenArena 0.8.8 (without the additional game modes).

Spearmint 0.5 is not backward compatible with Spearmint 0.4 VMs. The network protocol number was changed from 10 to 11 in order to separate Spearmint 0.5 game servers from previous Spearmint versions.

Engine

  • Fix skipping to main menu instead of displaying Team Arena Single Player postgame menu. This was broken since before the first Spearmint release.
  • Fix reading usercmds after voip data. It was broken since Spearmint 0.3.
  • Fix Windows dedicated server crash at start up.
  • Fix dedicated servers delist from master after 23 days (sv_public was forced to 0).
  • Disable automatically window scaling for High DPI on Windows Vista and later.
  • Add fs_pakWarningDialog cvar to allow disabling pk3 checksum mismatch warning. It must be set on the command line.
  • Add top-level fonts directory available to all games.
  • Add fontlist command to show currently loaded fonts.
  • Add support loading bitmap TrueType, OpenType, and Windows .fon fonts.
  • Add drag and drop demo playback support to macOS AppBundle. It was already supported on Windows and GNU/Linux.
  • Make play demo command support any demo file extension.
  • Make demo playback set fs_game from system info in demo file.
  • Allow percent sign (%) and semicolon (;) in chat messages.
  • Allow mint-game.settings to specify demo extension (com_demoext) and game name for dpmaster (com_gamename).
  • Get default fs_game from spearmint-gamelist.txt based on what games are installed.
  • Change system homepath to use XDG_DATA_HOME (/home/user/.local/share/spearmint) instead of /home/user/.spearmint on Unix-like platforms.
  • On Unix, convert com_homepath (e.g., Spearmint) to lowercase and replace spaces with hyphens.
  • Move say/tell for dedicated server into Game VM.
  • Allow Game VM to reject splitscreen player dropout (for games that only allow add/removing splitscreen players between matches).
  • Remove botlib from engine. It use to be exposed to Game VM API.

Renderers

  • Change renderer filename prefix from mint to spearmint.
  • Add view weapon fov to CGame API.
  • Add cheat protection to r_lightmap cvar.
  • Remove cheat protection from r_lodCurveError and OpenGL2’s r_forceSun cvars.
  • Disable OpenGL2’s r_autoExposure by default as it does not work correctly in splitscreen.
  • Don’t use occusion query for OpenGL2’s sun rays by default as it does not work correctly in splitscreen (r_drawSunRaysOcclusionQuery).
  • Add alphaTest shader keyword for American McGee’s Alice.
  • Add r_dlightImageSize cvar which affects the generated dynamic light image. Setting it to 16 (instead of the default 128) uses the vanilla Q3 image.
  • Add r_marksOnBrushModels cvar to allow disabling marks on moving platforms (the original Quake 3 behavior).
  • Fix first person player model OpenGL2 sun shadows only appearing if player is close to ground.
  • Fix floating point precision loss in renderer at high level times.
  • Fix lightningDiffuseEntity on ppc with altivec.
  • Fix dlights being invisible in OpenGL2 renderer. They were broken since Spearmint 0.2.
  • Fix dlights in splitscreen with sun shadows enabled
  • Get all OpenGL functions at run-time instead of partially at compile time.
  • Many fixes and improvements to the OpenGL2 renderer.

VM Common

  • Add command argument auto completion support for commands in CGame/Game VM.
  • Use separate global define lists in engine for Game and CGame.
  • Add trap_PC_RemoveGlobalDefine(const char *name) and (per-file) trap_PC_AddDefine(int handle, const char *name) to Game/CGame API.
  • Fix segfault when printing invalid UTF-8.
  • Fix crash when pmove_msec is 0.
  • Fix splitscreen corpse origin moving when player respawns.

CGame VM

  • Add trap_S_StopAllSounds() to CGame API.
  • Add mouse wheel support to UI list boxes.
  • Set r_lodCurveError and OpenGL2’s multisample cvar in Quake 3 graphics menu.
  • Add cg_weaponFov cvar for controlling first person weapon view model field of view independent from world field of view.
  • Add support for screenPlacement keyword to Team Arena menu files for widescreen. See the commit for details.
  • Add weaponToggle <weapNum> command for switching to a weapon and then back to previous when the command is run again.
  • Add (per-player) cg_cyclePastGauntlet cvar for allowing Gauntlet to be selected with weapnext and weapprev commands. It in the controls menu under the name “skip gauntlet”.
  • Add cg_crosshairHealth and cg_splitviewThirdEqual to Quake 3 game options menu.
  • Add cg_drawPickupItems cvar to allow disabling in Q3 / enabling in Team Arena.
  • Add +vstr command like in OSP mod and ET.
  • Add game filter to Quake 3 server browser.
  • Display 8 maps instead of 4 in Q3 start server menu.
  • Make server browser default to Internet and fetch servers from all master servers.
  • Make UI continue searching for local servers until found.
  • Load deferred player models when a splitscreen player is added.
  • Remove ‘Snow/Rain’ from Quake 3 Game Options menu.
  • Fix several issues with the Team Arena server browser.
  • Fix lightning trail when cg_drawGun is 0.
  • Fix HUD placement of Team Arena power ups in widescreen.
  • Fix Team Arena single player end of round camera orbit.
  • Fix clearing edge of screen after Team Arena UI kills server.
  • Fix nonresponsive favorites in Quake 3 having no hostname.
  • Fix team chat box (cg_teamChatHeight 8) being shared by all splitscreen players and messages appearing on screen twice (chat box and notify text).
  • Add tell messages from team mates to team chat box.
  • Fix lightning and grapple trails when missing models.
  • Fix cinematic file not being closed on CL_Disconnect.
  • Fix playing demos on macOS by opening demo via finder.
  • Fix splitscreen notify text line gap being 2x size.
  • A lot of improvements for using proportional width TrueType/OpenType fonts.

Game VM

  • Add botlib from engine for greater mod capabilities.
  • Add dedicated server say/tell command, which were previously in the engine.
  • Allow persistant powers without team to be picked up.
  • Don’t start a vote after vote passed for map change.
  • Fix team chat meant for bot getting sent to wrong player if bot client number does not equal player number.
  • Fix swapping bot bounding boxes in AAS files on powerpc.
  • Fix multiple delayed “addbot random” commands sometimes picking the same bot.
  • Fix hit accuracy stats for lightning gun and shotgun kills.
  • Fix score bonus for defending the flag carrier in CTF.
  • Restore not giving defense score bonus to flag carrier.
  • Add score bonus for defending the flag carrier in 1 Flag CTF.
  • Make bots use crusher on other q3tourney6 maps.
  • Make bots only use q3tourney6 crusher to kill their enemy.
  • Don’t turn game commands into chat at intermission.

 

]]>
https://clover.moe/2017/10/13/spearmint-0-5-released/feed/ 2
Coming this October https://clover.moe/2017/09/11/coming-this-october/ Tue, 12 Sep 2017 04:25:37 +0000 https://clover.moe/?p=927
“There should be a new Turtle Arena 0.7 release in the near-future, hopefully next month.”
“hahahahaha. By ‘next month’ I obviously meant 2017.”
—November 3, 2015

I am planning to release Spearmint 0.5 and Turtle Arena 0.7 on Friday the 13th of October 2017.

Turtle Arena 0.7 is does not fix any issues with the melee attacking or overall design. It restores a few aspects of the game to earlier versions (before 0.5.x started changing the game for EBX), fixes some issues, and inherits many improvements from Spearmint including better compatibility with recent operating systems. It also unintentionally makes all the levels brighter because I fixed the external lightmap support… I don’t expect serious development to resume but new releases will probably be more frequent than every 5 years after this.

EBX was originally a continuation of Turtle Arena without Ninja Turtles (or any other playable characters due to lack of 3D models…). The small differences of the existing EBX code/data are being reintegrated into Turtle Arena. The EBX code/content repositories will be deleted. This will make Turtle Arena development easier as currently I work on EBX then merge the changes into Turtle Arena.

Whether EBX will be a separate game based on Spearmint or uses a new engine is unknown. Though there is a high probability EBX will never be created at all. At this point EBX is little more than a title for a game with Sonic style single player / co-op, Quake 3 like first person shooter multiplayer, hot pink blood, electronic dance music / hardcore techno, and a human character named Clover.

]]>