deathkiller / jazz2

🎮 · Jazz² Resurrection: Open-source reimplementation of Jazz Jackrabbit 2
https://deat.tk/jazz2/
GNU General Public License v3.0
492 stars 18 forks source link

Main.dz not found #66

Closed grepwood closed 2 years ago

grepwood commented 2 years ago

Hi, I'm running this from Gentoo, freshly installed from Portage. What's the Main.dz file? It's nowhere to be found in the original gamedata. What's actually the gamedata that the game needs in order to play? I have means to make a gamedata ebuild, but only in a separate overlay, since upstream Gentoo probably will take more time to consider integrating GOG-backed packages.

deathkiller commented 2 years ago

Well, I don't know... Gentoo package is not maintained by me. But otherwise you have to import original JJ2 game data using mono Import.exe <path-to-jj2>, then you can run the game. Also, initial Main.dz is included in release and is extended/overwritten by Import.exe (original assets are imported into it).

grepwood commented 2 years ago

Excellent news!

From what I can see, Gentoo has this ebuild https://gitweb.gentoo.org/repo/gentoo.git/plain/games-arcade/jazz2/jazz2-0.6.7.ebuild with the following content:

# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit desktop dotnet wrapper

DESCRIPTION="Open source reimplementation of Jazz Jackrabbit 2"
HOMEPAGE="http://deat.tk/jazz2/"
SRC_URI="https://github.com/deathkiller/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-3"
SLOT="0/${PV}"
KEYWORDS="~amd64"
IUSE="gles2-only server"

RDEPEND="
    dev-lang/mono
    media-libs/libopenmpt
    media-libs/libsdl2[video]
    media-libs/openal
    gles2-only? ( media-libs/mesa[gles2] )
    !gles2-only? ( virtual/opengl )
"

FRAMEWORK="4.5.2"
DIR="/usr/share/${PN}"

src_prepare() {
    default

    # Android/WASM only.
    rm -r Content/Shaders.ES30/ || die

    if use gles2-only; then
        rm -r Content/Shaders/ || die
        mv Content/_ES20/* Content/ || die
    else
        rm -r Content/_ES20/ || die
    fi
}

src_compile() {
    local TARGET

    MAIN_TARGETS="Jazz2 $(usex server Jazz2.Server '') Tools/Import"
    EXT_TARGETS="OpenTKBackend $(usex gles2-only Es20Backend GL21Backend)"

    for TARGET in ${MAIN_TARGETS}; do
        cd "${S}/${TARGET}" || die
        exbuild "${TARGET##*/}.csproj"
    done

    for TARGET in ${EXT_TARGETS}; do
        cd "${S}/Extensions/${TARGET}" || die
        exbuild "${TARGET##*/}.csproj"
    done
}

src_install() {
    local TARGET

    insinto "${DIR}"
    # TODO: Package OpenTK.
    doins -r Content/ Packages/AdamsLair.OpenTK.*/lib/net*/*

    for TARGET in ${MAIN_TARGETS}; do
        doins "${TARGET}/Bin/Release/${TARGET##*/}.exe"
    done

    insinto "${DIR}"/Extensions
    for TARGET in ${EXT_TARGETS}; do
        doins "Extensions/${TARGET}/Jazz2/Bin/Release/Extensions/${TARGET}.core.dll"
    done

    make_wrapper ${PN} "mono '${EPREFIX}${DIR}/Jazz2.exe'"
    make_wrapper ${PN}-import "mono '${EPREFIX}${DIR}/Import.exe'"
    use server && make_wrapper ${PN}-server "mono '${EPREFIX}${DIR}/Jazz2.Server.exe'"

    newicon Jazz2/Icon.ico ${PN}.ico
    make_desktop_entry ${PN} "Jazz² Resurrection" ${PN}.ico
}

I see now why Main.dz is missing in a Gentoo installation. Main.dz is derived from a specific set of Jazz2-compatible gamedata, which gets produced by Import.exe.

The ebuild once finished compiling the exes and graphic backends will install to /usr/share/jazz2 and add some wrappers to /usr/bin. Nothing more, nothing less. I think the next version of the ebuild should include a message that users/admins must import the gamedata themselves as this is not part of the scope of the ebuild. Perhaps I could make a gamedata ebuild in src_prepare-overlay, since we are more than able to do crazy things like support Windows software, DOS software and even install software from GOG.

grepwood commented 2 years ago

Just one question though. The Main.dz included in the GitHub releases - it comes from what set of gamedata?

deathkiller commented 2 years ago

Great!

I use Content directory from GitHub root and run Import.exe /minimal. It creates minimal Main.dz (in Content directory) to run and ready to import JJ2.