Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Would Like to Contribute #113

Open
pranav-deshpande opened this issue Aug 29, 2017 · 1 comment
Open

Would Like to Contribute #113

pranav-deshpande opened this issue Aug 29, 2017 · 1 comment
Assignees

Comments

@pranav-deshpande
Copy link

Hello, I used to play claw when I was a kid and I still do:).

I would like to contribute to this project. How can I go about doing so? My experience in game programming is limited to a chess engine: https://github.com/universecoder/Horus-Chess-Engine.
Could you provide me some guidance?

@pjasicek pjasicek self-assigned this Aug 29, 2017
@pjasicek
Copy link
Owner

Heh, this is a tough one.

This game and its engine is written pretty much only "by myself, for myself", but certain things, like implementing new levels using existing components are not hard. But delving into things like tweaking physics engine or Claw's states / movement is a big no-go since the code is a mess.

For this I would need to create a new wiki page, which I will certainly do in foreseeable future, but here are atleast some basics when it comes to adding new levels:

  1. You need to own WapMap (http://kapitanpazur.piasta.pl/dl/wapmap.zip) to view the level and logics that will need to be implemented for reference
  2. Add a new level to SAVES.XML file (in this case new level is 7) with its checkpoints
  3. Try to load the level from menu, it will crash on assert - find the root cause of assertion failure and fix it. Then try again until there are no more assertion failures.
  • It will fail most certainly in places where only levels 1-6 are expected
  • It will fail on unimplemented logics for certain actors

Now, implementing game actors:

  • Most actors are defined via .XML files in Assets/LEVELx/.XML - you can check for reference existing actors in existing levels. These XMLs consist of multiple components which in its effect assemble actor as a whole - you can google "Actor Entity-Component system"
  • This actor defined in XML is a "prototype" - it is a template upon which a concrete in-game actor is created
  • Introducing new actor takes multiple steps:
    • Create *.XML file as an actor template
    • Add this actor to enum in Interfaces.h / Interfaces.cpp along to all other actors
    • In Engine/Converters.h (this file is a mess) there is a huge if-else if control which translates original WWD object's (actors) into XML actors which are then spawned by my engine - you need to translate the logic you are trying to implement into a XML actor by calling specific ActorTemplates::CreateXmlData_*

Best way to learn how to implement new concrete logics is to check one of my past commits - there are multiple commits implementing concrete actors.

I know that what I wrote just know is probably uncomprehensible, I will try to describe it in some wiki page as I mentioned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants