pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RigelEngine: update to RigelEngine-0.8.5



Module Name:	pkgsrc-wip
Committed By:	Yorick Hardy <yorickhardy%gmail.com@localhost>
Pushed By:	yhardy
Date:		Mon Jul 18 17:58:22 2022 +0200
Changeset:	b518677dd1c7de75d29fe7047dcd1c6da45f9641

Modified Files:
	RigelEngine/Makefile
	RigelEngine/distinfo
	RigelEngine/patches/patch-3rd__party_CMakeLists.txt
	RigelEngine/patches/patch-CMakeLists.txt
Added Files:
	RigelEngine/patches/patch-3rd__party_imgui_imgui_backends_imgui__impl__opengl3__loader.h
	RigelEngine/patches/patch-3rd__party_loguru_loguru.cpp

Log Message:
RigelEngine: update to RigelEngine-0.8.5

Release notes:

== 0.8.5

This release adds a built-in mod manager and further improves the HUD
in widescreen mode, along with some smaller additions. With the mod
manager, it's now possible to organize mods into directories, and
select mods to use from within the game. Regarding the HUD, additional
styles are now available, which increase the size of the gameplay
area. Finally, there are also a few bug fixes, including a critical
one.

Release notes

New features

  * Implemented a mod manager. Mods can now be organized into
    directories, and each mod can be enabled/disabled in the options
    menu. See Modding Support for more details.
  * Added additional "remixed" HUD styles in widescreen mode. Thanks
    to @OpenRift412 and Roobar for creating the art assets.
  * Added additional upscaling filters: Sharp bilinear, pixel perfect
    (integer scaling). Note that using mods with high-res
    replacement graphics currently forces nearest neighbor filtering.
  * The game now writes a log file into the user directory.
  * Gamepad controls are now explained in the options menu.
  * The top-level in-game menu (reachable via gamepad) now shows the
    current episode, level and difficulty in the title.

Improvements

  * Improved the look of the classic HUD in widescreen mode, by
    extending the left side to cover the length of the screen.
  * Reworked quick saving/loading gamepad controls, to make loading
    quick saves possible without needing to open the menu. The
    select/back button now acts as a modifier. When pressed together
    with shoot, a quick save is made. Pressing the button together
    with jump loads the last quick save.

Bug fixes

  * Fixed destructible level geometry remaining visible after being
    destroyed in certain cases
  * Fixed game not starting if the game data was in a path with
    certain special characters (Windows only)
  * Fixed brief camera movement after turning wide-screen mode on/off
    or changing the window size
  * Fixed slime blob containers sometimes not animating (Linux only)
  * Fixed sprites flickering in and out of existence in certain
    circumstances
  * The episode 2 boss would keep flying when killed in mid-flight.
    This is now fixed.

== 0.8.4

This release improves the smooth movement and motion mode by making
dynamic level geometry smooth, and fixing some issues. Modding
support is enhanced as well, and there are a few other improvements
and bug fixes. Finally, the HUD in widescreen mode has changed: The
area to the left of the HUD is not used for showing parts of the level
anymore, since this would often show out-of-bounds parts of the map.
The previous release (v0.8.3) attempted to minimize that by keeping
the camera higher up than normal when near the bottom of the map, but
that caused other issues. So ultimately, I decided to roll back the
camera changes and block off the area to the left of the HUD to avoid
the out-of-bounds issue completely.

Release notes

Smooth motion mode improvements

  * Moving parts of the level (falling rocks, doors, ...) are now
    moving smoothly as well.
  * Fixed glitches (jittering top part) with the smash hammer and
    grabber claw.

Modding support improvements

  * It's now possible to replace STATUS.MNI with a PNG image that
    can be original or higher resolution. This allows changing
    various fonts and UI elements, including parts of the HUD.
  * Replacements for actors used by the HUD can now be high
    resolution.

Other improvements

  * Improved performance on Raspberry Pi, especially when under water
    areas are visible.
  * Blocked off the area to the left of the HUD in widescreen mode to
    avoid potentially showing out-of-bounds parts of the map
  * Further improved digitized sound effect quality by replacing the
    ADPCM decoding code with the exact same algorithm as implemented
    in the SoundBlaster firmware, based on disassembly of the latter
  * Improved the sound test UI

Bug fixes

  * Fixed camera moving too far down when falling into a bottomless
    pit in widescreen mode
  * Fixed important parts at the bottom of the level (like lava pools)
    being hidden in certain cases in widescreen mode (e.g. in E3L1)
  * Fixed visual glitches on GL ES devices like Raspberry Pi and
    Odroid Go (overly pixelated backdrop during scrolling, white lines
    visible next to certain enemies during the damage flash effect)
  * Fixed missing fade-in effect when using the teleporter
  * Fixed incorrect rendering of high-res replacement backdrops when
    vertical auto-scrolling is used
  * Fixed position of dialog boxes (quit confirm, game paused etc.) in
    widescreen mode
  * Fixed visual glitch when entering a menu while smooth motion is
    enabled

== 0.8.3

This is another release primarily focused on bug fixes. In addition,
some smaller improvements are made, mainly in the area of sound and
music playback quality.

Release notes

New features

  * Added the Nuked OPL3 AdLib emulator as an alternative to DBOPL
    (selectable in the Sound options). Nuked OPL3 is more accurate
    but also uses more CPU. The difference in CPU load has little
    impact on most systems, but it does matter on low-end devices
    like Raspberry Pi Zero.
  * Added a "sound test" button to the Sound options (play a chosen
    sound effect)

Improvements

  * Improved sound effect quality for certain digital sounds
    (SB_nn.MNI files in VOC format) by using a more accurate ADPCM
    decoding algorithm (same as DosBox's SoundBlaster emulation).
  * Slightly improved sound effect quality for AdLib sounds by
    running the emulator at the native OPL2 frequency (49716 Hz).
  * In widescreen mode, the camera now tries to avoid showing
    out-of-bounds parts of the map if possible, by restricting
    downward scrolling unless it's necessary to keep the player
    on screen.
  * Added 75 to the list of pre-defined FPS limits for the FPS
    limiter.

Bug fixes

  * Fixed a soft-lock that could occur when killing a ceiling
    sucker at exactly the same time as it sucked up Duke.
  * When dying due to shooting an airlock and then respawning at
    a checkpoint, Duke would remain in the spinning animation. This
    is now fixed.
  * Fixed a small visual glitch appearing during the fade-out of the
    intro movie.
  * The credits screen shown during the attract mode loop didn't
    react to any key press aside from ESC, this is now fixed.
  * Under certain circumstances, the main menu would respond to a
    keypress that happened during the intro or another menu. This is
    now fixed.
  * Fixed visual glitches (bright lines between tiles) that could
    occur at certain resolutions/window sizes when using high-res
    replacement graphics.
  * Fixed an issue that made high-resolution backdrop replacements
    appear as low resolution under certain circumstances.
  * Fixed right side of the HUD being partially cut off at certain
    window sizes/resolutions.

== 0.8.2

The biggest change in this release is the addition of a smooth
scrolling & movement option (aka 60 FPS mode). This feature is
still in development, but already adds a lot to the game, which
is why I decided to include it in this minor release. In addition,
some bugs were fixed and a few small features/improvement were added.

Release notes

New features

  * Added a smooth scrolling and movement mode. When this is enabled,
    the game is taking full advantage of the display framerate
    (60 FPS or higher) by interpolating object and camera movement
    during rendering (internal game logic is still running at 15 FPS).
    This is currently still work in progress, see known issues.
  * The engine has a built-in screenshot function now. Press F12 to
    take a screenshot. It will be saved as PNG in either your Duke
    Nukem II game files directory, or in the user profile directory
    if the former is not writable.  * It's now possible to skip the
    bonus screen after finishing a level by pressing Enter or Esc (or
    controller button A or B).
  * Added an option to the Enhancements tab to skip the intro when
    RigelEngine starts (same as the -s command line option).
  * Added information about currently active gamepads to the options
    menu

Improvements

  * In widescreen mode, out of bounds areas are now drawn in black
    instead of showing the background.
  * Replacement backgrounds (mods) can now be wider than the original
    art they are replacing, and will be displayed correctly (without
    distortion) * For auto-scrolling backgrounds, the scroll position
    is now saved/restored when quick saving/loading.
  * The game will now run even if the intro movie files (NUKEM2.F1,
    .F2 etc.) are missing. The movies will be skipped instead of
    exiting the game.
  * Game physics are more correct now w.r.t. the original code when
    it comes to items falling down.

Bug fixes

  * Fixed the "wall dance" glitch. This glitch allows Duke to move
    through walls using a specific sequence of moves.
  * Fixed spiders sometimes not latching on to Duke when touching him
  * Fixed items getting stuck in the ceiling when the box was shot
    while hidden behind a rock that would later fall down
    (e.g. in N2).
  * Fixed missing animation for the Computer merchandise pickup.
  * Fixed a glitch when starting a level while having high resolution
    mods enabled, where the graphics would briefly show as low
    resolution.
  * Fixed in-game messages not being affected by screen shake when in
    widescreen mode

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=b518677dd1c7de75d29fe7047dcd1c6da45f9641

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 RigelEngine/Makefile                               | 13 +++++------
 RigelEngine/distinfo                               | 18 +++++++++-------
 .../patches/patch-3rd__party_CMakeLists.txt        |  9 ++++----
 ...i_imgui_backends_imgui__impl__opengl3__loader.h | 16 ++++++++++++++
 .../patches/patch-3rd__party_loguru_loguru.cpp     | 25 ++++++++++++++++++++++
 RigelEngine/patches/patch-CMakeLists.txt           | 17 ++++++++++-----
 6 files changed, 75 insertions(+), 23 deletions(-)

diffs:
diff --git a/RigelEngine/Makefile b/RigelEngine/Makefile
index d1b53ed337..bd6e7a26d7 100644
--- a/RigelEngine/Makefile
+++ b/RigelEngine/Makefile
@@ -1,16 +1,16 @@
 # $NetBSD$
 
 GITHUB_PROJECT=	RigelEngine
-GITHUB_TAG=	v0.8.1
+GITHUB_TAG=	v0.8.5
 DISTNAME=	${GITHUB_TAG}
 PKGNAME=	RigelEngine-${GITHUB_TAG:S/^v//}
 CATEGORIES=	games
 MASTER_SITES=	${MASTER_SITE_GITHUB:=lethal-guitar/}
 DIST_SUBDIR=	${GITHUB_PROJECT}
 DISTFILES+=	${GITHUB_TAG}.tar.gz
-DISTFILES+=	imgui-1.7.9.tar.gz
-SITES.imgui-1.7.9.tar.gz= \
-	-${MASTER_SITE_GITHUB:S,^,-,:=ocornut/}imgui/archive/v1.79.tar.gz
+DISTFILES+=	imgui-1.86.tar.gz
+SITES.imgui-1.86.tar.gz= \
+	-${MASTER_SITE_GITHUB:=ocornut/}imgui/archive/v1.86.tar.gz
 
 MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
 HOMEPAGE=	https://github.com/lethal-guitar/RigelEngine/
@@ -23,8 +23,8 @@ USE_LANGUAGES=	c c++17
 
 INSTALLATION_DIRS+=	bin
 
-pre-configure:
-	cp -R ${WRKDIR}/imgui-1.79/* ${WRKSRC}/3rd_party/imgui/imgui
+pre-patch:
+	${CP} -R ${WRKDIR}/imgui-1.86/* ${WRKSRC}/3rd_party/imgui/imgui
 
 do-install:
 	${INSTALL_GAME} ${WRKSRC}/src/RigelEngine ${DESTDIR}${PREFIX}/bin
@@ -33,6 +33,7 @@ do-install:
 .include "../../devel/SDL2/buildlink3.mk"
 .include "../../devel/boost-headers/buildlink3.mk"
 .include "../../devel/boost-libs/buildlink3.mk"
+.include "../../devel/libexecinfo/buildlink3.mk"
 .include "../../graphics/glm/buildlink3.mk"
 .include "../../wip/entityx/buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"
diff --git a/RigelEngine/distinfo b/RigelEngine/distinfo
index ca8a8a41ef..a6e835ec03 100644
--- a/RigelEngine/distinfo
+++ b/RigelEngine/distinfo
@@ -1,10 +1,12 @@
 $NetBSD$
 
-RMD160 (RigelEngine/imgui-1.7.9.tar.gz) = 2ae1cb43d0048e1f74f812ec47de5280dda53a84
-SHA512 (RigelEngine/imgui-1.7.9.tar.gz) = 35ed7af89123e09989ef81085f19ed15f97f4798e2b35834fd8b4ae918889b51132d85901f867ab2f379711a734bc7b2edd309d74f3f7527eaaaebfd766d3737
-Size (RigelEngine/imgui-1.7.9.tar.gz) = 1299303 bytes
-RMD160 (RigelEngine/v0.8.1.tar.gz) = 45cc12c2a06a110868eedd6c70144b5e6a11a19d
-SHA512 (RigelEngine/v0.8.1.tar.gz) = 7881b1917b01e88c4a62a243e5f2bf485cc825e7f4da02b41100b943b0ad53a483146bf4450fad21826ad7def56d53c844ea43cd0db54f6ce6ba40f02f97a4ce
-Size (RigelEngine/v0.8.1.tar.gz) = 931476 bytes
-SHA1 (patch-3rd__party_CMakeLists.txt) = f49945a17edea545a69f1cb50525843cea161fa7
-SHA1 (patch-CMakeLists.txt) = 16d0f7280af0f937874348bc3a49016dc582d849
+BLAKE2s (RigelEngine/imgui-1.86.tar.gz) = f6736355cd4c35dbfb004db8d957d2772e91de92781c424973c9bf178be6f90e
+SHA512 (RigelEngine/imgui-1.86.tar.gz) = e84fdc0839e96e53dcbe3a5d13bbd0def860c09bafa709b22f8371d5c710f5c90f6957e5f12813156ed0c4d0fa2b56c5e3be701206f7770749ce169818697229
+Size (RigelEngine/imgui-1.86.tar.gz) = 1432629 bytes
+BLAKE2s (RigelEngine/v0.8.5.tar.gz) = 5c6d614de3dca860d05fd3443e6db915205ab4f9c51f9ae3f2ffa2b6ab87801f
+SHA512 (RigelEngine/v0.8.5.tar.gz) = 7a7b199199cd1d4c4ba8ce839a51f2f1d31e35b03159d27fa0f062eae927c00b24366b1b32cefe2ffa6162ab1024d22268283cebe77fbdafff0f52390c3f17f6
+Size (RigelEngine/v0.8.5.tar.gz) = 1014878 bytes
+SHA1 (patch-3rd__party_CMakeLists.txt) = 039d7d29a6971a15d7e520fc258529270328ab63
+SHA1 (patch-3rd__party_imgui_imgui_backends_imgui__impl__opengl3__loader.h) = 57ea79360b8393e239f9318fe7aa4abe2d22d1b6
+SHA1 (patch-3rd__party_loguru_loguru.cpp) = b581d26ad435056423a2c41d39d1312c01da1279
+SHA1 (patch-CMakeLists.txt) = 77f0059b5afbc8966b3ce5cea8e6f550ad1bef5f
diff --git a/RigelEngine/patches/patch-3rd__party_CMakeLists.txt b/RigelEngine/patches/patch-3rd__party_CMakeLists.txt
index b8bafce2c9..d3ae2820af 100644
--- a/RigelEngine/patches/patch-3rd__party_CMakeLists.txt
+++ b/RigelEngine/patches/patch-3rd__party_CMakeLists.txt
@@ -2,9 +2,9 @@ $NetBSD$
 
 Don't download entityx. Use the pkgsrc version.
 
---- 3rd_party/CMakeLists.txt.orig	2021-08-22 10:14:12.000000000 +0000
+--- 3rd_party/CMakeLists.txt.orig	2022-05-29 11:42:06.000000000 +0000
 +++ 3rd_party/CMakeLists.txt
-@@ -34,11 +34,11 @@ set(ENTITYX_MAX_COMPONENTS 64 CACHE INTE
+@@ -39,7 +39,7 @@ set(ENTITYX_MAX_COMPONENTS 64 CACHE INTE
  
  # EXCLUDE_FROM_ALL to disable installing these HO or static library deps
  add_subdirectory(dbopl EXCLUDE_FROM_ALL)
@@ -13,8 +13,9 @@ Don't download entityx. Use the pkgsrc version.
  add_subdirectory(glad EXCLUDE_FROM_ALL)
  add_subdirectory(speex_resampler EXCLUDE_FROM_ALL)
  add_subdirectory(stb EXCLUDE_FROM_ALL)
- add_subdirectory(imgui EXCLUDE_FROM_ALL)
- add_subdirectory(imgui-filebrowser EXCLUDE_FROM_ALL)
+@@ -48,4 +48,4 @@ add_subdirectory(imgui-filebrowser EXCLU
+ add_subdirectory(nuked-opl3 EXCLUDE_FROM_ALL)
+ add_subdirectory(loguru EXCLUDE_FROM_ALL)
  
 -rigel_disable_warnings(entityx)
 +#rigel_disable_warnings(entityx)
diff --git a/RigelEngine/patches/patch-3rd__party_imgui_imgui_backends_imgui__impl__opengl3__loader.h b/RigelEngine/patches/patch-3rd__party_imgui_imgui_backends_imgui__impl__opengl3__loader.h
new file mode 100644
index 0000000000..e1815b03a8
--- /dev/null
+++ b/RigelEngine/patches/patch-3rd__party_imgui_imgui_backends_imgui__impl__opengl3__loader.h
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Load the unversioned libGL, since libGL.so.1 is not correct
+for all platforms.
+
+--- 3rd_party/imgui/imgui/backends/imgui_impl_opengl3_loader.h.orig	2021-12-31 07:11:21.779651179 +0000
++++ 3rd_party/imgui/imgui/backends/imgui_impl_opengl3_loader.h
+@@ -625,7 +625,7 @@ static GL3WglProc (*glx_get_proc_address
+ 
+ static int open_libgl(void)
+ {
+-    libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
++    libgl = dlopen("libGL.so", RTLD_LAZY | RTLD_LOCAL);
+     if (!libgl)
+         return GL3W_ERROR_LIBRARY_OPEN;
+     *(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
diff --git a/RigelEngine/patches/patch-3rd__party_loguru_loguru.cpp b/RigelEngine/patches/patch-3rd__party_loguru_loguru.cpp
new file mode 100644
index 0000000000..d74b1aa183
--- /dev/null
+++ b/RigelEngine/patches/patch-3rd__party_loguru_loguru.cpp
@@ -0,0 +1,25 @@
+$NetBSD$
+
+* Copy the OpenBSD code: NetBSD does not provide an integer thread ID.
+* fix compile error for static_cast<> discarding const qualifiers.
+
+--- 3rd_party/loguru/loguru.cpp.orig	2022-05-29 11:42:06.000000000 +0000
++++ 3rd_party/loguru/loguru.cpp
+@@ -973,6 +973,8 @@ namespace loguru
+ 			#elif defined(__FreeBSD__)
+ 				long thread_id;
+ 				(void)thr_self(&thread_id);
++			#elif defined(__NetBSD__)
++				unsigned thread_id = -1;
+ 			#elif defined(__OpenBSD__)
+ 				unsigned thread_id = -1;
+ 			#else
+@@ -1088,7 +1090,7 @@ namespace loguru
+ 						 i - skip, int(2 + sizeof(void*) * 2), callstack[i],
+ 						 status == 0 ? demangled :
+ 						 info.dli_sname == 0 ? symbols[i] : info.dli_sname,
+-						 static_cast<char*>(callstack[i]) - static_cast<char*>(info.dli_saddr));
++						 static_cast<const char*>(callstack[i]) - static_cast<const char*>(info.dli_saddr));
+ 				free(demangled);
+ 			} else {
+ 				snprintf(buf, sizeof(buf), "%-3d %*p %s\n",
diff --git a/RigelEngine/patches/patch-CMakeLists.txt b/RigelEngine/patches/patch-CMakeLists.txt
index b388b13109..9c78790653 100644
--- a/RigelEngine/patches/patch-CMakeLists.txt
+++ b/RigelEngine/patches/patch-CMakeLists.txt
@@ -1,10 +1,17 @@
 $NetBSD$
 
-Don't download entityx. Use the pkgsrc.
+Don't download entityx. Use the pkgsrc version.
 
---- CMakeLists.txt.orig	2021-08-22 10:14:12.000000000 +0000
+--- CMakeLists.txt.orig	2022-05-29 11:42:06.000000000 +0000
 +++ CMakeLists.txt
-@@ -30,10 +30,10 @@ include("${CMAKE_SOURCE_DIR}/cmake/rigel
+@@ -24,17 +24,17 @@ option(BUILD_TESTS "Build tests" OFF)
+ # Dependencies
+ ###############################################################################
+ 
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+ include("${CMAKE_SOURCE_DIR}/cmake/rigel.cmake")
+ 
+ # This catches the most common case, where none of the submodules have been
  # initialized. It's still possible to get in a state where entityx is present
  # but other submodules are not, but that's unlikely to happen to someone who
  # has just cloned the repo and wants to build for the first time.
@@ -19,8 +26,8 @@ Don't download entityx. Use the pkgsrc.
  
  
  if("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
-@@ -58,6 +58,8 @@ else()
-     find_package(Boost 1.65 COMPONENTS program_options)
+@@ -57,6 +57,8 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Emsc
+ else()
      find_package(SDL2 REQUIRED)
      find_package(SDL2_mixer REQUIRED)
 +    find_package(PkgConfig REQUIRED)


Home | Main Index | Thread Index | Old Index