On Mon, Oct 25, 2021 at 06:13:35PM +0200, Omar Polo wrote:
> Sorry for replying this late
> 
> Thomas Frohwein <tfrohw...@fastmail.com> writes:
> 
> > 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...
> 
> The additions from the GodotStream API seems to be limited to a single
> namespace, so I'm not opposed to bundling them into the shipped Godot.
> It's a deviation from vanilla Godot for sure, but it's small and done to
> help making more games available.
> 
> I'm OK with bundling this in the current Godot port as your (updated)
> diff does, but we should document it somewhere (be it with a message or
> a README) to not lure users into thinking that these are official API.
> 
> I'm also fine with a flavor, but given how small the impact of bundling
> this library is, I tend to prefer avoiding splitting in multiple flavors
> or subpackages.

Below an updated diff that includes a README. Does that look ok?

> > 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?
> 
> the updated patch is fine for me :)
> 
> (the CVS marker is the updated diff is wrong, as it changes the revision
> from 1.26 to 1.25 when the latest is 1.27, but I don't think it's a
> problem in practice ;-)
> 
> I checked that the wantlib is correct and that the APIs exists.  Godot
> doesn't crash when calling stuff under Steam.*, but I don't have an
> account anymore so I can't do further runtime testing.

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/godot/Makefile,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile
--- Makefile    14 Oct 2021 14:33:29 -0000      1.27
+++ Makefile    29 Oct 2021 18:56:57 -0000
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.27 2021/10/14 14:33:29 thfr Exp $
+# $OpenBSD: Makefile,v 1.25 2021/08/31 11:59:56 kirby Exp $
 
 BROKEN-powerpc =       fails at runtime, the UI is totally blank
 BROKEN-powerpc64 =     Unknown ISA
@@ -8,8 +8,10 @@ BROKEN-mips64 =                Unknown ISA
 COMMENT =      2D and 3D game engine
 
 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>
@@ -20,14 +22,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
@@ -35,7 +41,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 \
@@ -53,6 +59,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 \
@@ -65,6 +72,7 @@ LIB_DEPENDS =         archivers/zstd \
                        audio/opusfile \
                        devel/gettext,-runtime \
                        devel/pcre2 \
+                       games/goldberg_emulator \
                        graphics/libwebp \
                        graphics/png \
                        multimedia/libtheora \
@@ -86,6 +94,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.9
diff -u -p -r1.9 distinfo
--- distinfo    5 Oct 2021 07:00:08 -0000       1.9
+++ distinfo    29 Oct 2021 18:56:57 -0000
@@ -1,2 +1,4 @@
-SHA256 (godot-3.3.4-stable.tar.xz) = 
n1On1tY/Tp15PEGtG++JUYYZ8+Hw3dCJplIfLV7cWFk=
-SIZE (godot-3.3.4-stable.tar.xz) = 20682120
+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
Index: pkg/README
===================================================================
RCS file: pkg/README
diff -N pkg/README
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/README  29 Oct 2021 18:56:57 -0000
@@ -0,0 +1,14 @@
+$OpenBSD: README.template,v 1.7 2019/05/09 17:45:05 ajacoutot Exp $
+
++-------------------------------------------------------------------------------
+| Running ${PKGSTEM} on OpenBSD
++-------------------------------------------------------------------------------
+
+Modules
+=======
+
+Note that this version includes the module "GodotSteam" in its namespace which
+is not part of the default Godot install. This is mainly for compatibility with
+runtime of prepackaged games. It communicates with games/goldberg_emulator, not
+an official Steam client. Making use of the Steam.* namespace for development
+may lead to unexpected behavior, so use at your own risk.

Reply via email to