pjasicek / openclaw Goto Github PK
View Code? Open in Web Editor NEWReimplementation of Captain Claw (1997) platformer
License: GNU General Public License v3.0
Reimplementation of Captain Claw (1997) platformer
License: GNU General Public License v3.0
All TogglePegs should make sound when they are toggled. The sound should only be generated when the TogglePeg is on the camera screen and the volume should scale with its distance to Claw (The farther the TogglePeg is, the less volume it should generate)
There are ground at the top of the goo (death tiles) which can be stepped on that disappear for a while after being stepped on and then reappear again
After killing Katherine and picking up the second gem, there should be a score screen.
Sounds that are really far away from Claw (e.g. dynamite explosion 3000pxs away from Claw) should not be played.
After several seconds, the camera should show what's below Claw. It's important for the gameplay because it may provide additional knowledge of the level.
Now, Claw just crouches.
Implement CutThroat's logic - he throws knifes on ranged range and stabs with dagger on melee range
Hi, I have compiled on ubuntu without error.
I put the file CLAW.REZ in to Build_Release, but when I run out the binary, I have this message :
ERROR: [VGetRawResourceSize] Could not locate: /states/menu/sounds/menubed.wav in rezArchive: CLAW.REZ
ERROR: [Load] Resource size return -1 => Resource not found. Resource: /states/menu/sounds/menubed.wav
Segmentation fault (core dumped)
Thanks for your works, and sorry for my english.
When Claw kills LaRaux and picks the first gem, there should be a score screen, instead there is a failed assertion.
TODO: Implement Leve 2 score screen XML description and possibly modify score screen source files to accomodate gem cutscenes.
Followup to #9
When powerup music finishes, level background music should continue from the point where it ended, instead it plays from beginning.
Currently unsolvable since SDL_Mixer does not support setting music playback position for MIDI format.
That platform is not moving... https://cloud.orange.ro/share/ff402aec6892cab61cff48268b71b3ab09daa7984b474901
Hello,
I've managed to successfully build a Linux version of your project:
Prerequisites for Ubuntu 16.04:
sudo apt install libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-gfx-dev libtinyxml-dev
Now for the compilation itself:
There is two bugs..
https://cloud.orange.ro/share/ab269ecdde8864db1cff48268b71b3ab09daa7984b474901
First is screenrecorded, second is screenshoted..
Here is the video proofs of glitches with stairs, a platform and pistol super jumping, last two descovered accidentally...
https://cloud.orange.ro/share/ef09f5c52fbd9c3d1cff48268b71b3ab09daa7984b474901
Vertical Warp should work just as classic, horizontal Warp
Implement Thief's logic - he shoots arrows on ranged range and does stuff on melee range
Hello, I am getting compilation errors during building:
It started happening 2 merges ago.
[ 84%] Building CXX object CMakeFiles/captainclaw.dir/CaptainClaw/Engine/Resource/Loaders/AniLoader.cpp.o
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp: In member function ‘bool ZipFile::Init(const string&)’:
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:122:48: error: ‘fopen_s’ was not declared in this scope
fopen_s(&m_pFile, resFileName.c_str(), "rb");
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:172:27: error: ‘_MAX_PATH’ was not declared in this scope
char fileName[_MAX_PATH];
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:173:20: error: ‘fileName’ was not declared in this scope
memcpy(fileName, pfh, fh.fnameLen);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:175:42: error: ‘_strlwr_s’ was not declared in this scope
_strlwr_s(fileName, _MAX_PATH);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp: In member function ‘std::__cxx11::string ZipFile::GetFilename(int) const’:
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:270:22: error: ‘_MAX_PATH’ was not declared in this scope
char pszDest[_MAX_PATH];
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:271:16: error: ‘pszDest’ was not declared in this scope
memcpy(pszDest, m_papDir[i]->GetName(), m_papDir[i]->fnameLen);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp: In member function ‘bool ZipFile::Init(const string&)’:
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:133:39: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&dh, sizeof(dh), 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:147:46: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(m_pDirData, dh.dirSize, 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp: In member function ‘bool ZipFile::ReadFile(int, void*)’:
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:310:37: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&h, sizeof(h), 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:320:41: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pBuf, h.cSize, 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:332:39: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pcData, h.cSize, 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp: In member function ‘bool ZipFile::ReadLargeFile(int, void*, void ()(int, bool&))’:
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:384:37: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&h, sizeof(h), 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:394:41: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pBuf, h.cSize, 1, m_pFile);
^
/home/rtheren/Games/Claw/CaptainClaw/CaptainClaw/Engine/Resource/ZipFile.cpp:406:39: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pcData, h.cSize, 1, m_pFile);
^
CMakeFiles/captainclaw.dir/build.make:1598: recipe for target 'CMakeFiles/captainclaw.dir/CaptainClaw/Engine/Resource/ZipFile.cpp.o' failed
make[2]: *** [CMakeFiles/captainclaw.dir/CaptainClaw/Engine/Resource/ZipFile.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:68: recipe for target 'CMakeFiles/captainclaw.dir/all' failed
make[1]: *** [CMakeFiles/captainclaw.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
I descovered two bugs:
In Level 2, rats operating cannons have no logic, therefore do not do anything. They should stay on top cannon and fire the cannon once Claw gets to its agro range.
After boss death the music stop, I don't remeber exactly but I think in original game when boss is defetead the music continues to play
Hi guys, I really appreciate your work here. However I noticed that there are no unit tests. Have you considered writing them? Do you have some thoughts about it? I don't have much experience with writing games, so maybe by any reason it's fine not to write them, but generally unit tests are invaluable e.g. as a safety net - they help to prevent regressions.
Level 2 End boss La Raux does not have any logic. He should be a tough opponent for Claw with 100 hp. He should be immune to all projectiles (he should parry them). He should be able to leap away from Claw attacks. After his death he should spawn one own the 9 gems.
Claw should be able to attach to existing ropes. Ropes should dangle back and forth left-right-left-right with predefined speed.
When Claw dies and respawns, he should lose his powerup (Catnip, FireSword...)
There are elevators which do not have one-way path but predefined, multi-way path., e.g. Top->Left->Down->Right, or it can be triangle-like way: Up->Down->Left
At the end of the level, there is a Boss - Katherine, which uses her whip at long range to attack Claw.
Hi, is there a chance to implement that? TY :) https://cloud.orange.ro/share/6e3d41b1f5ee88a81cff48268b71b3ab09daa7984b474901
Okay, so today I finished making first level fully functional (atleast to my liking), though there are some little things that should be fixed / implemented in the future, mainly:
Besides this, I am pretty happy with the current result. So I will now focus on making other levels accessible ! I am especially looking forward to implementing boss fights - for that I intend to implement some simple LUA scripting hooks.
How I see the project going:
1.5: Completely working level 2 with its bossfight
1.6.: Levels 3 and 4 - for that I will need to implement some new behaviours, such as ropes (I am getting sick thoughts about how to hack it together like the rest of my physics) and the plant which shoots Claw upwards into the air (for this I will also need to hack my physics system)
After these levels are done, pretty much all mandatory ingame logics will be inplace. After finishing level 4 I intend to focus on optimizing the game for Android (mainly its controls, but also FPS could be higher).
Right now enemy needs to have a new subclass for each possible attack state (stand-attack, stand-shoot, duck-attack, duck-shoot) just because of different agro fixtures attached to these states.
The code itself is almost exactly the same for each *AttackStateAIComponent, so to avoid code repetition, refactor the approach. Solution:
Right now I will probably not implement it and stick with the rather more inflexible design as it is right now (I will just add 2 more states for duck-attack and duck-shoot and handle the state transition). But I want this to be visible for me here as a reminder as something I will need to fix in a future.
Cannon towers in Level 2 have no logic - they do not do anything. They should fire a cannonball when Claw comes to its agro range.
Got this issue once with f714339 as latest commit, can't replicate it anymore.
LaRaux (and all other bosses) should be immune to Claw's projectiles. Only Claw's basic attacks should be able to hurt him.
It's easiest to reproduce it in Level 2, when climbing the first ladder. Stay on the ladder, about one of Claw's length from the top. The dog will see you and keep shooting.
After any level ends, either by killing boss or picking a map piece, screen with picked up treasures should be presented. After this screen is left (by pressing Enter or Escape), next level should be loaded.
BossWarp, which should teleport Claw to the boss-fight area and trigger boss-dialogue and then boss-fight itself is not working.
When Claw picks any powerup (Catnip, Fire Sword, invisibility...) the background music should change to /GAME/MUSIC/POWERUP.XMI.
When powerup runs out, the music should the return back to the original level music, but not to the beginning - to the time when it was when powerup music interrupted it
Create a prototype map with pre-generated XML elements for actors.
e.g.:
Actor in level 1 - "Soldier" - have his prototype XML definition stored someplace (in game logic) and when he is instantiated, just replace appropriate values (Position, patrol area).
There are fanfern, which after they are stepped on, shoot the actor upwards after a while.
There are places which pop up and down spikes. when Claw steps on spikes which are popper up, he receives 5 damage.
The dogs with throwing knives are very fast, is possible to slow down little bit?
Certain treasures (Scepter, Crown, Geckos, Rings, Crosses) should generate specific treasure sound when they are spawned - from killing enemy or from destroying treasure. The sound should be:
/GAME/SOUNDS/PURELEASE1.WAV
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.