The commercial game Halloween (FPS) for Linux is now the open source project


levi

Still fresh, damnit!
Joined
Oct 6, 2008
Messages
14,986
Location
Somewhere off the coast of the EU
No, debian probably won't backport these fixes to their buster release. I'm not sure of gl4es comes via that route, or by a package on the pyra repo though, but still that'll take a few days to get picked up I guess. You'll probably need to clone the git repo and build it if you want it today.

Edit: Sounds like aTc builds a version and puts it in our repo, so it will come but take a few days or so.
 

Farox

Certified Guru
Joined
Jan 8, 2009
Messages
2,218
Age
53
Location
Italy
Website
rbnet.it
@ptitSeb did you have any issue with the keys ? They seems not to be recognised when in game (i can assign it on the options menu), only the mouse and escape key works (the same on my Linux box).
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
9,053
Age
49
Location
France, near Lyon
@ptitSeb did you have any issue with the keys ? They seems not to be recognised when in game (i can assign it on the options menu), only the mouse and escape key works (the same on my Linux box).
Yes, the keys were not working in game. But I didn't really investigate, I was just thinking it was my quick compile that was faulty somehow. I notice a warning in input.cpp about a function that didn't return a value as expected.. Maybe it's related?
*EDIT* no, the warning is not related, it's happening on a mouse function.
*EDIT2* that function: IN_ReadKeyboard
Code:
void IN_ReadKeyboard()
{
    int i;
    #ifdef H_MAC //todo...farox
    gKeyHasBeenPressed = false;
    for(i=0 ; i<93+8 ; i++)
    {
        //#ifdef H_MAC       
        if(KInput::isPressed( (EKeyboardLayout)i))
        //#endif
        {
            gKeyHasBeenPressed = true;
            KeysInput[i].key = true;
        }
        else
        {
            KeysInput[i].key = false;
        }
    }
    #endif
}
Has no code for linux, and a comment "todo...farox". I think the message is clear ;)
 
Last edited:

Pocak

Member
Joined
Oct 11, 2009
Messages
74
Don't bother with IN_ReadKeyboard, that function is only used in the Mac version. I think the problem is di_IsKeyActivated, as is rejects key ids above 256, but SDL's keysyms go above 300. Now, how to fix it without breaking Windows and Mac...

When it comes to the Pandora, I think CPU speed is going to be a blocker. The game engine is rather inefficient, but modern PCs can just power through it. GPU speed shouldn't be a problem. The Pyra should be fine. Maybe not a solid 60 fps, but I guess it will be playable.

@gbudny It says SDL can't set the video mode. Maybe your monitor doesn't support those resolutions. The game doesn't check whether the chosen resolution is actually available. That whole part needs to be modernized.
 

Brizzly27

Newbie
Joined
Nov 21, 2021
Messages
13
Don't bother with IN_ReadKeyboard, that function is only used in the Mac version. I think the problem is di_IsKeyActivated, as is rejects key ids above 256, but SDL's keysyms go above 300. Now, how to fix it without breaking Windows and Mac...

When it comes to the Pandora, I think CPU speed is going to be a blocker. The game engine is rather inefficient, but modern PCs can just power through it. GPU speed shouldn't be a problem. The Pyra should be fine. Maybe not a solid 60 fps, but I guess it will be playable.

@gbudny It says SDL can't set the video mode. Maybe your monitor doesn't support those resolutions. The game doesn't check whether the chosen resolution is actually available. That whole part needs to be modernized.
Thank you guy for your incredible work on my almost 20 year old game, this is very very cool and i love merge pull requests on the github project!
I guess it could be a possible good idea to rewrite inputs linux + mac + win with SDL indeed
I should have a new PC with linux Ubuntu on it in a few months, after then I should be able to help a bit on the project. You give me the motivation to do it and it's cool to get a solid linux version :)
Some command line tools convert 3DS Max maps to a BSP (binary space partition) file + lightmaps, maybe we can try to improve this old tech with modern batch of vertices / brushes / shaders.
Ellipsoide collisions are sometimes weird on the bsp, maybe the good idea is to update with a free 3D physic library : reactphysics3d.com
Characters animations were made with milkshape3D library.
As far as I can remember the full CD-Rom game brings a few videos cinematics (intro, game complete) I should find it on a backup somewhere in my archives..
 

Farox

Certified Guru
Joined
Jan 8, 2009
Messages
2,218
Age
53
Location
Italy
Website
rbnet.it
Thank you guy for your incredible work on my almost 20 year old game
Thanks to you for releasing the source and wellcome here.
Don't bother with IN_ReadKeyboard, that function is only used in the Mac version.
Thanks also to you...i was suspecting that function is only for Mac...but i wan't sure about it.

On Pyra fps is on par with Linux PC (about 60fps) on Pandora i'm compiling....
 

Brizzly27

Newbie
Joined
Nov 21, 2021
Messages
13
I installed Ubuntu 20 and cloned the repository.
I get a few errors with libjpeg-turbo

Here is my build file :

gcc -Wno-write-strings -Wno-endif-labels -I/usr/include/SDL/ -I/usr/include -I/opt/libjpeg-turbo/include/ -c alloween.cpp loadjpeg_linux.cpp bspfile.cpp camera.cpp halloween_linux.cpp player.cpp physic.cpp collision.cpp maths.cpp ellipsoide.cpp console.cpp bsptree.cpp opengl.cpp demo.cpp display.cpp enveffect.cpp filesys.cpp frustrum.cpp game.cpp gameover.cpp image.cpp input.cpp interface.cpp jpeg.cpp dsound.cpp libbass.cpp liste.cpp menu.cpp menu_init.cpp menu_sel.cpp monster.cpp mskmodel.cpp objet_proc.cpp script.cpp shader.cpp sorting.cpp story.cpp textdraw.cpp tga.cpp timer.cpp objet.cpp net_temp_linux.cpp g++ -L/usr/X11R6/lib/ -L/opt/libjpeg-turbo/lib64/ -o ../Hallow999 alloween.o loadjpeg_linux.o bspfile.o camera.o halloween_linux.o player.o physic.o collision.o maths.o ellipsoide.o console.o bsptree.o opengl.o demo.o display.o enveffect.o filesys.o frustrum.o game.o gameover.o image.o input.o interface.o jpeg.o dsound.o libbass.o liste.o menu.o menu_init.o menu_sel.o monster.o mskmodel.o objet_proc.o script.o shader.o sorting.o story.o textdraw.o tga.o timer.o objet.o net_temp_linux.o -L/usr/X11R6/lib -lGL -lGLU -ljpeg -lm `sdl-config --cflags --libs` ./libbass.so

Build logs:

./projet_linux/build: line 1: clean_tmp: command not found /usr/bin/ld: ./libbass.so: .dynsym local symbol at index 2 (>= sh_info of 2) /usr/bin/ld: ./libbass.so: .dynsym local symbol at index 3 (>= sh_info of 2) /usr/bin/ld: ./libbass.so: .dynsym local symbol at index 4 (>= sh_info of 2) /usr/bin/ld: loadjpeg_linux.o: in function `jpg_read(char*, int*, int*)': loadjpeg_linux.cpp:(.text+0x17c): undefined reference to `tjInitDecompress' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x1b8): undefined reference to `tjDecompressHeader3' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x1d1): undefined reference to `tjGetErrorStr2' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x1f8): undefined reference to `tjDestroy' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x270): undefined reference to `tjDecompress2' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x289): undefined reference to `tjGetErrorStr2' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x2bc): undefined reference to `tjDestroy' /usr/bin/ld: loadjpeg_linux.cpp:(.text+0x2e5): undefined reference to `tjDestroy' collect2: error: ld returned 1 exit status
 
Last edited:

gbudny

Still Fresh
Joined
Oct 16, 2021
Messages
30
I'm so happy that more users decided to help with Halloween for Linux x86-64, Pyra, and Pandora.

Thank you.

I realized that BASS isn't available for Linux PowerPC:


I have two Intel Macs from 2009/2010, but it's terrible news to me.

I know about the issue with the build file:


Try to build it using cmake:

cd Halloween3D/HalloweenSrc
mkdir Build
cd Build
cmake ..
make

@Pocak It says SDL can't set the video mode. Maybe your monitor doesn't support those resolutions. The game doesn't check whether the chosen resolution is actually available. That whole part needs to be modernized.

Thank you for the answer.

It's a DELL monitor that I bought two years ago.
I can change the screen resolution in MATE to 1920x1080. I noticed that I have to select a screen resolution a bit higher (1152x864) than in the game (1024 x768) to solve this issue.

This trick doesn't work with a screen resolution 1600x1200 set in Halloween.
 
Last edited:

Brizzly27

Newbie
Joined
Nov 21, 2021
Messages
13
Build is now ok thank you!
So amazing to see the game running fine on linux after so many years!
I think controls require a config copy dedicated for linux with standard keyboard WASD mapping.
Mouse player rotation is slow, also I need to fix up the console key binding
Video mode 1600x1200 32Bits in fullscreen messed up my Desktop screen be careful with FULLSCREEN mode.
Also it seems ellipsoid collision player VS grounds is not working well as player feels like "glued" while walking

Also a developer tips, set this value from 0 to 1 in config file : /system/hconfig.cfg
developer 0 1.000000

It displays game dev logs on screen overlay, and also gives all weapons & infinite amo

Shows bounding boxes:
drawtris 0 1.000000
 
Last edited:

Farox

Certified Guru
Joined
Jan 8, 2009
Messages
2,218
Age
53
Location
Italy
Website
rbnet.it
I get a few errors with libjpeg-turbo
When i installed libjpeg-turbo i got the same error, using that lib installed from debian repository (because it install an old version).
I donwloaded the most recent version, compiled and it build just fine the game.
Anyway you resolved using cmake...so it's ok (i added just in case will be usefull for someone).

On the Pandora and Pyra build, the game freeze when found a letter and a screen appear where i must press play with mouse..on my Linux PC it's ok...
Also on Pandora is really slow around 6-8 fps.
 

Brizzly27

Newbie
Joined
Nov 21, 2021
Messages
13
012345678 SDL keys handling pushed on main branch
+ Intro phase clear background fixe

#elif defined(H_LINUX) char * KeyName = KeysInput[index].keyname; if(strlen(KeyName) == 1) { Key = (int)KeyName[0]; } else if(strlen(KeyName) == 3 && KeyName[0] == '[' && KeyName[2] == ']') { Key = (int)KeyName[1]; } else { m_ConsPrint("unknow keyname: %s index: %d\n", KeyName, index); }
 

Magic Sam

Forever Homebrew
Joined
Aug 10, 2007
Messages
2,435
Age
39
Location
Penguin Village
Hi all :)

Looks like a great game, can't wait to try it on the Pyra !

Is a DBP package already in the works ?

Cheers, Magic Sam
 

Farox

Certified Guru
Joined
Jan 8, 2009
Messages
2,218
Age
53
Location
Italy
Website
rbnet.it
Is a DBP package already in the works ?
I'd like to make a dbp package...but i need to know how to make it...but first i don't know how to fix the freeze of the game...so if someone more expert would made a look and release it for pyra...i'm ok.
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
9,053
Age
49
Location
France, near Lyon
I'd like to make a dbp package...but i need to know how to make it...but first i don't know how to fix the freeze of the game...so if someone more expert would made a look and release it for pyra...i'm ok.
If the freeze is only on ARM platform and not on x86, make sure you build with "-fsigned-char" in the CFLAGS on ARM...
 

gbudny

Still Fresh
Joined
Oct 16, 2021
Messages
30
When i installed libjpeg-turbo i got the same error, using that lib installed from debian repository (because it install an old version).
I donwloaded the most recent version, compiled and it build just fine the game.
Anyway you resolved using cmake...so it's ok (i added just in case will be usefull for someone).

On the Pandora and Pyra build, the game freeze when found a letter and a screen appear where i must press play with mouse..on my Linux PC it's ok...
Also on Pandora is really slow around 6-8 fps.

Thanks.

It's nice to know that it will be fixed when a new version of libjpeg-turbo becomes available for Ubuntu and Debian.

Halloween sometimes works slowly on Linux x86-64 in some areas. For instance, I played on this map only for two minutes, and it had started generating a lot of information about a rec_depth overflow, recusive error, and stuck (!).

 
Last edited:

Brizzly27

Newbie
Joined
Nov 21, 2021
Messages
13
Thanks.

It's nice to know that it will be fixed when a new version of libjpeg-turbo becomes available for Ubuntu and Debian.

Halloween sometimes works slowly on Linux x86-64 in some areas. For instance, I played on this map only for two minutes, and it had started generating a lot of information about a rec_depth overflow, recusive error, and stuck (!).

Just pushed on main branch a new version with much improved faster player moves (roration acceleration)
+ A cool halloween fog effect :)

Screenshot from 2021-11-23 01-55-46.png
Screenshot from 2021-11-23 01-55-46.png
 
Last edited:
Top