scemino / engge Goto Github PK
View Code? Open in Web Editor NEWOpen source remake of Thimbleweed Park's engine
Home Page: https://scemino.github.io/
License: MIT License
Open source remake of Thimbleweed Park's engine
Home Page: https://scemino.github.io/
License: MIT License
$ ls resources/
ThimbleweedPark.ggpack1 ThimbleweedPark.ggpack2
$ md5sum resources/*
45f6e4a6f5182e8e8150c0b0d7e07f52 resources/ThimbleweedPark.ggpack1
a0a35c32caf048803752d70b7fe637e4 resources/ThimbleweedPark.ggpack2
$ $ gdb --args ./engge
GNU gdb (GDB) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./engge...(no debugging symbols found)...done.
(gdb) r
Starting program: /home/g/Games/engge/engge
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
FntFont: parsing "DialogFont.fnt"...
FntFont: loading textures...
[New Thread 0x7ffff3179700 (LWP 10259)]
[Detaching after fork from child process 10260]
[Thread 0x7ffff3179700 (LWP 10259) exited]
[New Thread 0x7ffff3179700 (LWP 10261)]
[Thread 0x7ffff3179700 (LWP 10261) exited]
[New Thread 0x7ffff3179700 (LWP 10262)]
[New Thread 0x7ffff1f94700 (LWP 10263)]
[New Thread 0x7ffff156c700 (LWP 10264)]
Load texture GameSheet
Failed to load image from memory, no data provided
Fail to load texture GameSheet.png
Thread 1 "engge" received signal SIGSEGV, Segmentation fault.
0x00007ffff7b47715 in __strlen_avx2 () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff7b47715 in __strlen_avx2 () from /usr/lib/libc.so.6
#1 0x00005555555aa638 in nlohmann::detail::input_adapter::input_adapter<char*, 0>(char*) ()
#2 0x000055555562dd74 in ng::SpriteSheet::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#3 0x000055555564c50f in ng::ActorIcons::ActorIcons(ng::Engine&, std::array<ng::ActorIconSlot, 6ul>&, std::array<ng::VerbUiColors, 6ul>&, ng::Actor*&) ()
#4 0x00005555555c2583 in ng::Engine::Engine(ng::EngineSettings&) ()
#5 0x000055555556d0f2 in std::_MakeUniq<ng::Engine>::__single_object std::make_unique<ng::Engine, ng::EngineSettings&>(ng::EngineSettings&) ()
#6 0x000055555556b17a in main ()
Implement a debugger to understand the state of the game during runtime.
Watch variables, add/remove breakpoints, ...
Did you notice that in the game, the cell phone is indicating whether it has reception or not ? There is a little blinking green square if it has reception.
Describe the bug
When I select an actor, the camera stays in the actual room, not in the actor's room.
To Reproduce
Select an actor which is not in the current room and see.
Expected behavior
I expect the camera to be in the actor's room.
Desktop (please complete the following information):
Example:
Why \"Brothers\" if you're sisters?
should be
Why "Brothers" if you're sisters?
I have tested windows version 938, 958 & 957 and cannot get them to recognise,
Which version is compatible?
Segmentation fault using latest revision (1f4376d)
gdb --args ./engge
...
### Obj openingSign
### Obj opening1987
### Obj openingBulletHole
### Obj openingPop
Thread 1 "engge" received signal SIGSEGV, Segmentation fault.
0x00007ffff7e965f5 in sq_pushobject () from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
(gdb) bt
#0 0x00007ffff7e965f5 in sq_pushobject () from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
#1 0x00005555555fa204 in ng::_RoomPack::_defineRoom(SQVM*, long long, ng::Room*) ()
#2 0x00005555555fabe0 in ng::_RoomPack::defineRoom(SQVM*) ()
#3 0x00007ffff7ebf6f0 in SQVM::CallNative(SQNativeClosure*, long long, long long, SQObjectPtr&, int, bool&, bool&) ()
from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
#4 0x00007ffff7ec06e2 in SQVM::Execute(SQObjectPtr&, long long, long long, SQObjectPtr&, unsigned long long, SQVM::ExecutionType) ()
from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
#5 0x00007ffff7ec33de in SQVM::Call(SQObjectPtr&, long long, long long, SQObjectPtr&, unsigned long long) ()
from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
#6 0x00007ffff7e99078 in sq_call () from /home/g/Games/engge-latest/extlibs/squirrel/squirrel/libsquirrel.so.0
#7 0x00007ffff7fbeba7 in sqstd_dofile () from /home/g/Games/engge-latest/extlibs/squirrel/sqstdlib/libsqstdlib.so.0
#8 0x00005555555e8a4d in ng::ScriptEngine::executeScript(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#9 0x0000555555568394 in main ()
(gdb) x/i $rip
=> 0x7ffff7e965f5 <sq_pushobject+37>: addq $0x1,0x8(%rdx)
(gdb) info registers
rax 0x0 0
rbx 0x7fffffffe1d0 140737488347600
rcx 0x7865745f 2019914847
rdx 0x0 0
rsi 0x8000000 134217728
rdi 0x555556296640 93825006134848
rbp 0x7fffffffdec0 0x7fffffffdec0
rsp 0x7fffffffdd80 0x7fffffffdd80
r8 0x55555b46bc10 93825091943440
r9 0x6 6
r10 0xa 10
r11 0x0 0
r12 0x5555563717f0 93825007032304
r13 0x5 5
r14 0x0 0
r15 0x70 112
rip 0x7ffff7e965f5 0x7ffff7e965f5 <sq_pushobject+37>
eflags 0x10206 [ PF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
I'm following other game re-implementation like OpenNitemare3D. The developer produces releases often, basically every time a new feature is implemented and needs testing. I wonder if the same approach could be followed during the development of engge.
When we exit a room, objects created by code createObject
, createTextObject
should be deleted, local threads should be stopped.
I think triggers should be removed also.
As you can see here: https://blog.thimbleweedpark.com/savegame the actors, objects are identified by an id.
Describe the bug
When Sandy is telling a story about Ransome, in the trailer, she should say "Ransome the Jerk...", "...was the featured act at Stupendous Brothers Circus..." and "He was about ready to go on stage and meet his well-earned doom."
To Reproduce
Go to the diner, talk to Sandy, and select twice the first sentence.
Desktop (please complete the following information):
When we double click somewhere or if we pressed the left mouse button for a certain time, the actor starts to run.
The instructions in the README won't work unless you move ThimbleweedPark.ggpack1
, ThimbleweedPark.ggpack2
and test.nut
into build
.
When you click somewhere, the actor does not always found a path to go even if it should be possible.
Support for game controller, touch pads, etc.
When the camera is following an actor, the camera should move only when the actor is reaching the border of the room.
As there is already a parser for prefs.json, we can use it to parse other json files and remove nlohman/json dependency.
save:
load:
UI:
bugs:
todo:
An object can have a parent defined in a wimpy file or by code with objectParent
function.
These dialog instructions are not implemented:
There are a lot of callbacks not called by the engine yet:
It would be nice to setup some CI tests to detect crossplaform issues when compiling and running engge. It is worth to mention that travis is free for open-source repositories and has support for Linux and OSX.
To have a better diagnostic when the program has an unexpected behaviour.
Actors and objects are visible even if we hide them by code.
When we execute an action (walk to door for example), if we click elsewhere, the previous sentence should be stopped. Today the actor walk to elsewhere but we still change room ๐ข
Describe the bug
Object can have a function called 'enter' which should be called each time the player enters the room.
To Reproduce
Enter RansomeTrailer room.
Expected behavior
You can see the cheese even if the refrigerator is closed.
This code is not executed: objectDependentOn(this, ransomeTrailerFridge, OPEN)
Desktop (please complete the following information):
After compiling engge in Linux, a few Makefiles
inside extlibs/*
are listed as modified. It would be nice to remove them (since they are autogenerated) and add them into .gitignore
.
Describe the bug
When entering a room, the actor has a wrong direction.
To Reproduce
Enter a room
Expected behavior
When the door is at the top, the actor should be facing us.
Screenshots
In this example, the actor enter the bathroomQuickiePalDoor:
Desktop (please complete the following information):
Additional context
none
Describe the bug
Hide words in parenthesis in dialogs.
To Reproduce
Type this test.nut:
include("Defines.nut")
include("Boot.nut")
inputOn()
inputVerbs(ON)
selectActor(ray)
enterRoomFromDoor(highwayBridgeDoor)
sayLine("@30344")
Expected behavior
Actor should say "It's already open.", not "(neutral)It's already open."
Desktop (please complete the following information):
When we select Give verb, the suffix "to" should be displayed then if the cursor is on an actor, its name should be appended.
Room effects
I know this implementation of the experimental game engine is still a work in progress, but I'm wondering if it does make sense to try to re-use the SCUMMVM implementation of common point-and-click game elements (actor, dialogs, etc) to accelerate the development progress.
Describe the bug
The parallax is wrong in some rooms.
To Reproduce
In the script type:
include("Defines.nut")
include("Boot.nut")
inputOn()
inputVerbs(ON)
selectActor(ray)
enterRoomFromDoor(bathroomQuickiePalDoor)
Expected behavior
The foreground should be displayed correctly.
Desktop (please complete the following information):
Additional context
none
When actor is picking an object, a reach animation should be played before.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.