FoonLudum Dare ExplorerLD55 → Sacrificed

Sacrificed

By klemmbaustein

View on ldjam.com

CategoryRankScoreCount
Overall673.8725
Fun593.8425
Innovation1783.3124
Theme754.0225
Graphics993.8425
Audio863.5924
Humor1123.2722
Mood294.0625

Comments

braulio-jg 2024-04-15 14:11

Your game entertained me for a long time. The time trial really puts you to the limit. It's even more impressive taking in charge that the graphic engine is also yours. Exceptional!

captaindreamcast 2024-04-15 14:20

Hehehe, made it through the final day by the skin of my teeth, that final sacrifice item sure was something!

Very atmospheric game! I got really absorbed into the routine of running the shop while handling the side hustle of summoning demons. The little buzz from the lamp while you whizz through the store and the lighting really brought out a special mood, I liked how you designed that. I also liked how the area got more and more demonic over time, that was a cool progression! Overall very well done, great job!

lakea 2024-04-17 10:11

a very nice entry.

raivk 2024-04-17 14:52

You nailed the mood here. Quite nice entry. I rarely play a jam game for that much time, so that's great. Congrats!

ace17 2024-04-22 11:14

Crashes at startup :-(

``` Starting... - Starting SDL2 - SDL2 started (No error) - Starting GLEW - GLEW started (No error) Log: [Error]: ------------------------------------[Error]------------------------------------ Log: [Error]: Crash Log: [Error]: Status: terminate called after throwing an instance of 'int' [1] 77402 IOT instruction ./Sacrificed ```

ace17 2024-04-22 11:14

Just in case, here's the backtrace:

``` Thread 1 "Sacrificed" received signal SIGILL, Illegal instruction. 0x00005555557a7209 in JPH::CollisionDispatch::sInit() () (gdb) bt #0 0x00005555557a7209 in JPH::CollisionDispatch::sInit() () #1 0x000055555577ed82 in JPH::RegisterTypesInternal(unsigned long) () #2 0x0000555555665a97 in JoltPhysics::Init() () #3 0x00005555556707dc in PhysicsSubsystem::PhysicsSubsystem() () #4 0x00005555555be882 in Application::Initialize(int, char**) () #5 0x00007ffff76186ca in __libc_start_call_main (main=main@entry=0x555555598660

, argc=argc@entry=1, argv=argv@entry=0x7fffffffe1c8) at ../sysdeps/nptl/libc_start_call_main.h:58 #6 0x00007ffff7618785 in __libc_start_main_impl (main=0x555555598660
, argc=1, argv=0x7fffffffe1c8, init=, fini=, rtld_fini=, stack_end=0x7fffffffe1b8) at ../csu/libc-start.c:360 #7 0x00005555555a0995 in _start () ```

klemmbaustein 2024-04-22 14:15

@ace17 Does your CPU support AVX2? Because it crashes somewhere in JoltPhysics code, which was set to use AVX2. SIGILL means it tried to execute an instruction which your CPU doesn't know, which could happen if your CPU doesn't support AVX2.

I can recompile the engine and game so it works without AVX2, if that is the problem.

ace17 2024-04-22 15:51

Good catch, indeed, my CPU only supports AVX1 (Core i7-2600K).

I tried recompiling the code, but I got blocking warnings when compiling assimp, so I gave up :-)

klemmbaustein 2024-04-22 21:00

@ace17 I recompiled the game, it should now work without AVX2. I don't know how well it will run on your CPU though.

Here is the GitHub release:

https://github.com/Klemmbaustein/ldjam55/releases/tag/no-avx2

ace17 2024-04-23 05:59

Thanks a lot!

Unfortunately, with the no-avx2 version, I still get a crash at startup:

``` ace@ANTEC Sacrificed % ./Sacrificed Starting... - Starting SDL2 - SDL2 started (No error) - Starting GLEW - GLEW started (No error) Log: [Error]: ------------------------------------[Error]------------------------------------ Log: [Error]: Crash Log: [Error]: Status: Loading Scene terminate called after throwing an instance of 'int' [1] 2352 IOT instruction ./Sacrificed ace@ANTEC Sacrificed % ```

... not in the same place, though:

``` Thread 1 "Sacrificed" received signal SIGILL, Illegal instruction. 0x0000555555742cb5 in JPH::AABBTreeToBuffer >::Convert(std::vector > const&, JPH::AABBTreeBuilder::Node const*, char const*&) () (gdb) bt #0 0x0000555555742cb5 in JPH::AABBTreeToBuffer >::Convert(std::vector > const&, JPH::AABBTreeBuilder::Node const*, char const*&) () #1 0x000055555573f469 in JPH::MeshShape::MeshShape(JPH::MeshShapeSettings const&, JPH::Result >&) () #2 0x00005555556499d5 in CreateJoltShapeFromBody(Physics::PhysicsBody*) () #3 0x000055555564a5fb in JoltPhysics::CreateShape(Physics::PhysicsBody*) () #4 0x000055555564a7dd in JoltPhysics::RegisterBody(Physics::PhysicsBody*) () #5 0x00005555556532c2 in CollisionComponent::Load(ModelGenerator::ModelData const&, Transform) () #6 0x000055555564d19c in MeshObject::LoadFromFile(std::__cxx11::basic_string, std::allocator >) () #7 0x000055555564d5a6 in MeshObject::OnPropertySet() () #8 0x00005555555e55b6 in Scene::LoadSceneInternally(std::__cxx11::basic_string, std::allocator >) () #9 0x00005555555e6326 in Scene::LoadNewScene(std::__cxx11::basic_string, std::allocator >, bool) () #10 0x00005555555bef64 in Application::Initialize(int, char**) () #11 0x00007ffff76186ca in __libc_start_call_main (main=main@entry=0x5555555986a0

, argc=argc@entry=1, argv=argv@entry=0x7fffffffe198) at ../sysdeps/nptl/libc_start_call_main.h:58 #12 0x00007ffff7618785 in __libc_start_main_impl (main=0x5555555986a0
, argc=1, argv=0x7fffffffe198, init=, fini=, rtld_fini=, stack_end=0x7fffffffe188) at ../csu/libc-start.c:360 #13 0x00005555555a0925 in _start () (gdb) ```

ace17 2024-04-23 06:03

The instruction causing the issue is VCVTPS2PH.

I'm rather surprised not having run into these kind of problems earlier with other game (This is the first time!).

goddzeproject 2024-04-23 06:43

Very stylish, well played out theme

klemmbaustein 2024-04-23 09:32

@ace17 I looked it up and your CPU doesn't have some more extensions JoltPhysics uses by default. I updated the GitHub release with a new build which has some more extensions turned off.

ace17 2024-04-23 16:16

Thank you very much, now it finally works! Was it worth the hassle ? Definitely !

Your custom engine is solid and your game runs fine on my machine, well done. I'm always happy to see people using their own engine!

The game is hard, though ; I only made it to tuesday :-)

Considering the dark/evening/foggy mood, the sound effects are a little too "dry", and might benefit from a little reverb ; and the whole mood would be greatly improved by simply adding a looped low-pass filtered+reverb white noise. This would make the whole audio atmosphere "blend" together!

henk 2024-04-27 19:29

I wish demons had as strong of a preference for milk as my customers.

This is quite featureful compared to the typical "custom game engine" entry; I noticed particle effects, models, textures, positional sound, rigid-body physics, and a camera raycast. I would have thought this was a Unity game, had I not read the description.

Random thoughts on the game itself: - Blurry texture upscaling is pretty ugly to my eyes. I think using something like GL_NEAREST would be much nicer visually, even if the "pixelated" look lacks realism - The "electrical hum" sound should always be the same frequency everywhere, assuming the shed isn't in a different country from the shop - The twist was funny and caught me off-guard, since I wasn't reading the task list and just wanted to click the customer to figure out what they wanted - That time limit is just a liiitle bit too tight, I think. When you're _constantly_ moving from one second to the next, you start to get super frustrated at the little things like getting caught on corners or the ever-so-slightly-too-short raycast distance when trying to reach the magazines - For how stressed I was by the end, I was hoping for a bit more of a satisfying ending :P

Good job!

klemmbaustein 2024-04-27 19:45

@henk

- I agree, pixelated looks better. Nearest filtering even is the default filtering option in the editor. The last few projects I've made in my game engine had a pixelated look, so I wanted to try something different. - Fair. - I came up with the twist as soon as I implemented the customers into the game but wasn't really sure if I had the time to implement it. It was worth it though in the end. - I agree. When my friend playtested the game he told me the game was too easy in the early parts of the game, but I think I might've gone a little too much in the opposite direction... - I didn't really know how to end the game and didn't have enough time to come up with something more.

animawish 2024-04-27 21:49

Hell in this universe must be a gigantic construction site, a lot of demand for planks and drills! Great atmosphere to this game. Nice job!

okamit 2024-04-28 21:32

I always look for these kinds of games during LD, I just love the creepy feel of a game with this kind of 3D look and mood, love it! Only thing I miss is perhaps more areas and variation to what you can do or something, and that the sound and feedback when switching items is a bit jarring.

I personally like the ultra-filtered look for this game, it makes it more creepy somehow, and while pixelated textures would make it look more modern/artsy/nice that would make the creepy atmosphere less prevalent in my eyes.

And EXTRA impressive that you made the engine yourself! It feels really polished as far as features goes that are in this game.

Great work!

jacobingalls 2024-04-28 21:37

Perhaps more of a comment on the engine than the game... but it felt really performant. Very little input latency, and somehow there was an even faster option! Nice entry!

oscar-berry 2024-04-28 21:51

Honestly, I don't know why, but I really liked your game! The daily quests work well to make me feel like I am the shop owner. And a touch of weirdness at the end with the final sacrifice. Congratulations!

bentglasstube 2024-04-29 07:30

Very nice gameplay loop. Things got a little hectic having to run over to the shed but it was very fun. I really enjoyed the minimal sound design with the ambient fluorescent light hum. Great job on your own engine, it worked really well.

ale 2024-04-29 16:31

That was a fun little game, I enjoyed it. It was a good amount hectic, although I did lose one day because I dropped a wood plank to serve a customer, and it disappeared. Luckily, I only had to restart that day and not the whole game. The graphics were nice and retro, although maybe a bit too dark overall. It worked well to create a moody atmosphere.

I love seeing submissions where people use their own engine, awesome job! I tried the Linux version, but unfortunately I couldn't get it to work. First, it dynamically links with sndio but doesn't ship with it, so I had to build it myself (sndio isn't provided by Fedora, but sndio runs atop alsa so you could get away with static linking). But after I did that, it failed to start due to a GLEW error, probably because I'm on Wayland. I guess [this issue](https://github.com/nigels-com/glew/issues/172) might be relevant, as even running it through Xwayland didn't fix the error. It seems some people found workarounds in the linked issues at the end.

Anyways, the Windows build worked through Wine so I was able to play :)

klemmbaustein 2024-04-29 18:55

@ale The problem with libsndio seems to be related to [this GitHub issue](https://github.com/kcat/openal-soft/issues/989). I'll look into it

The GLEW thing seems odd. For me it works both on Wayland Cinnamon and on WSLg which also uses Wayland. Can you describe the error further?

ale 2024-04-29 19:27

This is the only output I get:

``` Starting... - Starting SDL2 - SDL2 started (No error) - Starting GLEW - GLEW Init Error: No GLX display Press Enter to continue ```

I tried running it directly, and through an dedicated Xwayland window. For reference, here's my system info:

``` Operating System: Fedora Linux 40 KDE Plasma Version: 6.0.3 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.2 Kernel Version: 6.8.7-300.fc40.x86_64 (64-bit) Graphics Platform: Wayland Processors: 24 × AMD Ryzen 9 7900 12-Core Processor Memory: 61.9 GiB of RAM Graphics Processor: NVIDIA GeForce RTX 4090/PCIe/SSE2 Manufacturer: Gigabyte Technology Co., Ltd. Product Name: B650M K ```

klemmbaustein 2024-04-29 20:07

@ale I updated the Linux version on the Ludum Dare page. It doesn't depend on libsndio anymore and now calls `glewContextInit()` directly, so it shouldn't load anything GLX related now. Can you see if this works?

ale 2024-04-29 22:23

Yup, working perfectly now! Screenshot_20240429_182239.png

alexandru-barbanoua 2024-05-02 16:11

good game but I found some problem while playing it. But it was cool experience well done

ava-skoog 2024-05-02 20:04

I liked this one a lot! Custom engine is always fun, too.

Really great atmosphere. Goldeneye vibes. The droning from the lights was a great touch and I really liked how each day more ritual-related stuff started showing up.

It was challenging but not frustrating. It was probably good that I looked around on the first day before customers made things more hectic, so that I already knew about the stuff in the shed before I needed it. It actually took me a little while to realise there was a backroom with the actual pentagram :')

I only failed a day once. It was nice that things were the same on the retry so that I knew not to drop the drill and serve the customer at the very end, when I could just sacrifice the drill first and then the customer wouldn't need to be served due to the, uh, circumstances... I also appreciated the time to breathe between days.

Can't really criticise anything except the ending could've had more to it, but that's a big ask for LD, and this was already impressive for a jam, fair amount of modelling work! Appreciate at least a nod to consequences for killing the customer in the end text.

Very cool, really nice job.