Hi, I've been experimenting with running commercial games with our Godot port and a substantial number refuse to run because they can't find Steam in Godot's namespace. Those games seem to be built with a module "GodotSteam" added during compile time.
This diff below adds said module to the port. It allows running some more (indie) games on OpenBSD. I know of "Nightfall Hacker", "SJ-19 Learns to Love!", and "Cruelty Squad" that I've been able to run with this change. There are probably more... This diff just adds it to the existing port, but as it leads to a deviation from "vanilla" Godot, it might be preferrable to make this a flavor, maybe godot-godotsteam? Or 2 separate ports that are based on the same Makefile.inc? Of course, maintenance would likely be easier without adding such complexity... You can test that the namespace now exists in Godot by opening a project in the editor and adding a script, then starting to enter something from the Steam namespace like 'Steam.getAchievement' into the code and seeing this show up in the auto completion. All this works through the Goldberg emulator library, so some Steam functionality may be stubbed or not return what you expect if used for actual development. comments or oks? Index: Makefile =================================================================== RCS file: /cvs/ports/games/godot/Makefile,v retrieving revision 1.25 diff -u -p -r1.25 Makefile --- Makefile 31 Aug 2021 11:59:56 -0000 1.25 +++ Makefile 18 Oct 2021 18:53:50 -0000 @@ -5,9 +5,11 @@ BROKEN-powerpc64 = Unknown ISA COMMENT = 2D and 3D game engine -V = 3.3.3 +V = 3.3.4 +GODOTSTEAM_V = g333-s151-g397 DISTNAME = godot-${V}-stable PKGNAME = godot-${V} +REVISION = 0 CATEGORIES = games HOMEPAGE = https://godotengine.org/ MAINTAINER = Omar Polo <o...@omarpolo.com> @@ -18,14 +20,18 @@ PERMIT_PACKAGE = Yes WANTLIB += ${COMPILER_LIBCXX} WANTLIB += GL X11 Xau Xcursor Xdmcp Xext Xfixes Xi Xinerama Xrandr WANTLIB += Xrender c enet execinfo freetype intl m mbedtls mbedcrypto -WANTLIB += mbedx509 mpcdec ogg opus opusfile png sndio theora theoradec -WANTLIB += vorbis vorbisfile webp xcb z pcre2-32 vpx zstd +WANTLIB += mbedx509 mpcdec ogg opus opusfile png sndio steam_api theora +WANTLIB += theoradec vorbis vorbisfile webp xcb z pcre2-32 vpx zstd # C++14 COMPILER = base-clang ports-gcc MASTER_SITES = https://downloads.tuxfamily.org/godotengine/${V}/ +MASTER_SITES0 = https://github.com/Gramps/GodotSteam/archive/refs/tags/ +DISTFILES = ${DISTNAME}${EXTRACT_SUFX} \ + ${GODOTSTEAM_V}.tar.gz:0 EXTRACT_SUFX = .tar.xz +DIST_SUBDIR = ${PKGNAME} MODULES = devel/scons # Can't disable builtin_bullet until devel/bullet has been updated to 2.88 @@ -33,7 +39,7 @@ MODULES = devel/scons # sharedlib_ext in modules/mono/config.py to '.so.1.0' MODSCONS_FLAGS = CC="${CC}" \ CXX="${CXX}" \ - CFLAGS="${CFLAGS}" \ + CFLAGS="${CFLAGS} -I${LOCALBASE}/include/goldberg_emulator/sdk_includes" \ CXXFLAGS="${CXXFLAGS} -Wno-deprecated-register" \ LINKFLAGS="${LDFLAGS} -lintl -lmpcdec" \ builtin_enet=no \ @@ -51,6 +57,7 @@ MODSCONS_FLAGS = CC="${CC}" \ builtin_pcre2=no \ builtin_zlib=no \ builtin_zstd=no \ + custom_modules=${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam \ progress=no \ pulseaudio=no \ target=release_debug \ @@ -63,6 +70,7 @@ LIB_DEPENDS = archivers/zstd \ audio/opusfile \ devel/gettext,-runtime \ devel/pcre2 \ + games/goldberg_emulator \ graphics/libwebp \ graphics/png \ multimedia/libtheora \ @@ -84,6 +92,12 @@ post-extract: pre-configure: ${SUBST_CMD} ${WRKSRC}/drivers/unix/os_unix.cpp + sed -E -i 's/ISteamHTMLSurface:://g' \ + ${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam/godotsteam.cpp + sed -E -i 's/steam\/steam_api\.h/steam_api.h/g' \ + ${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam/godotsteam.{h,cpp} + sed -E -i 's,CPPPATH=.*,CPPPATH=["${LOCALBASE}/include/goldberg_emulator/sdk_includes"]),g' \ + ${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam/SCsub do-install: ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot* \ Index: distinfo =================================================================== RCS file: /cvs/ports/games/godot/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 22 Aug 2021 01:43:49 -0000 1.8 +++ distinfo 18 Oct 2021 18:53:50 -0000 @@ -1,2 +1,4 @@ -SHA256 (godot-3.3.3-stable.tar.xz) = vFWFDZ/8lQXuBcOtqItkhxNZ45DPZ/wtWK4CrTqpv3M= -SIZE (godot-3.3.3-stable.tar.xz) = 20648824 +SHA256 (godot-3.3.4/g333-s151-g397.tar.gz) = Wqzzcwh+u0r5PZZd5WgJCZ3dFhdJs8ZCbNNS5Ln5V9w= +SHA256 (godot-3.3.4/godot-3.3.4-stable.tar.xz) = n1On1tY/Tp15PEGtG++JUYYZ8+Hw3dCJplIfLV7cWFk= +SIZE (godot-3.3.4/g333-s151-g397.tar.gz) = 149576 +SIZE (godot-3.3.4/godot-3.3.4-stable.tar.xz) = 20682120