Monday, July 31, 2017

Re: NEW: games/corsixth

On Sun, Jul 30, 2017 at 05:33:32PM -0400, Brian Callahan wrote:
> Hi ports --
>
> Attached is a new port, games/corsixth. CorsixTH is an open source clone of
> the game Theme Hospital.
>

Marvelous!

Started off by building it on amd64 -current, snapshot from 07.31.

The built went fine, but make port-lib-depends-check complained:

$ make port-lib-depends-check

corsixth-0.60.1(games/corsixth):
Missing lib: lua5.3.5 (/usr/local/share/CorsixTH/CorsixTH) (NOT REACHABLE)
Extra: lua5.1.5
*** Error 1 in target 'port-lib-depends-check' (ignored)
$

I had lua-5.3.4 as a dependency from nmap and lua5.1 as a dependency from
a bunch of stuff.

Installed and tried to start it, got welcomed by a black window with an error
message and the same error message presented in the terminal (I will skip
providing a screenshot):

$ corsixth
An error has occurred in CorsixTH:
./Lua/strict.lua:66: module 'lfs' not found:
no field package.preload['lfs']
no file '/usr/local/share/lua/5.3/lfs.lua'
no file '/usr/local/share/lua/5.3/lfs/init.lua'
no file '/usr/local/lib/lua/5.3/lfs.lua'
no file '/usr/local/lib/lua/5.3/lfs/init.lua'
no file './lfs.lua'
no file './lfs/init.lua'
no file '/usr/local/lib/lua/5.3/lfs.so'
no file '/usr/local/lib/lua/5.3/loadall.so'
no file './lfs.so'
stack traceback:
[C]: in upvalue 'fn'
./Lua/strict.lua:66: in function 'require'
./Lua/app.lua:23: in main chunk
[C]: in function 'persist.dofile'
./CorsixTH.lua:56: in function 'dofile'
./CorsixTH.lua:108: in main chunk
[C]: in ?

lfs is of course missing for lua5.3. Make install added it for 5.1.

I proceeded to remove nmap because who needs network scanning when
you can play Theme Hospital instead?

That makes port depends check really happy:
$ make port-lib-depends-check
$

Now the binary runs with a different error, probably missing files.
Here I agree with sthen@ that adding a pkg-readme of where to put
the files is a nice touch that most game ports already have (ie. for
ioquake3, yaquake2 etc). I was wrong and didn't grab the message
but not able to reproduce it yet.

After a few tries it showed me a window with the game and a picker
to locate the game files. I tried to full screen it in i3 but the
game segfaulted (without a core file). I can reproduce that by
starting the game again and hitting Mod-f for fullscreen. It
also happens when sending it to another screen.

I just start it now in a fresh window to have it fullscreen
and proceed to pick the game data folder from GOG.com.

The game starts, music and sound is present, the cutscene plays.
Everything seems to work perfectly gameplay wise.

Long story short, I think this needs perhaps a hard cap on the
lua version and the suggestions sthen@ left before. I wouldn't
worry too much on i3 resize segfault - that can be handled with
upstream post import.

Regards,
Adam

> ---
> pkg/DESCR:
> CorsixTH is a reimplementation of the 1997 Bullfrog business sim Theme
> Hospital. As well as faithfully recreating the original, CorsixTH adds
> support for modern operating systems, high resolutions, and much more.
>
> CorsixTH requires game assets from Theme Hospital to work properly.
> ---
>
> You will have to obtain a copy of Theme Hospital to play this (the GoG
> download worked for me using innoextract to extract it, like with OpenRCT2).
>
> This requires a C++11 compiler. In theory, CorsixTH should work on any
> platform even those that don't have clang as their base compiler (I don't
> have the hardware to test, sadly). I don't think it's appropriate to do
> ONLY_FOR_ARCHS=${CLANG_ARCHS} unless the theory doesn't work out in
> practice. What's the best way to do this?
> COMPILER = clang gcc
> MODCLANG_ARCHS = <some list that doesn't include ${CLANG_ARCHS}>
> MODGCC4_ARCHS = <some list that doesn't include ${CLANG_ARCHS} or
> ${MODCLANG_ARCHS}>
> Does this make sense?
>
> Comments/OKs welcome, port attached. Works well on amd64.
>
> ~Brian
>

No comments:

Post a Comment