Giter VIP home page Giter VIP logo

thnk's Introduction

๐Ÿค” THNK

The THNK Framework Banner

An authoritative multiplayer games framework for the FLOSS engine GDevelop.

Links

Contributors

Thanks to all the contributors to THNK! Here is the full list of all contributors of all kinds to the project:

All Contributors

Ko-fi contributors
Ko-fi contributors

๐Ÿ’ต
Arthur Pacaud
Arthur Pacaud

๐Ÿšง ๐Ÿ’ป ๐Ÿ“– ๐Ÿ“
Rinax
Rinax

๐Ÿ›
Leo_Red
Leo_Red

๐ŸŽจ
Tim
Tim

๐Ÿ“–
triloute
triloute

๐Ÿ“–
Emily Lemonly
Emily Lemonly

๐Ÿ“–
dartpk
dartpk

๐Ÿ› ๐Ÿ’ป

Contributing

Installing

To install all dependencies, run yarn. You may use npm, but note that only a yarn lockfile will be provided and accepted in PRs. If you have disabled postinstall scripts, run yarn generate-protocol to run the code generator on the flatbuffer files.

Building

Run yarn build to execute the full build pipeline. You can also build individual parts with the other build scripts in package.json:

Building THNK with yarn build:thnk and the adapters with yarn build:adapters outputs a bundle to the dist folder. yarn build:extensions automatically inserts those into the THNK extensions in extensions.

To test your changes, import the extension with your changes into GDevelop. If you make changes to the extension itself, don't forget to export it back to the extensions folder.

Submitting changes

Before submitting a PR, make sure that your code builds & fully functions within the extension, and that it passes both typescript & jest tests. Run yarn ts && yarn test to run both checks. Make sure the extensions in extensions are properly generated with the latest version of your code. In case of doubts, run yarn build again before committing.

Understanding the file structure

There are a few main folders that you need to keep in mind while contributing:

  • extensions - Contains the GDevelop extensions files. While most of the important code is in code, the extensions themselves need to be modified to add actions, conditions, etc. You also need them to actually use the built THNK code.
  • protocol - Contains FlatBuffers protocol definitions. Anything that transits between the server and client must be defined through a FlatBuffer ServerMessage or ClientMessage, depending on which side will be sending that message.
    • After changing a file there, you need to run yarn generate-protocol to run codegen for the FlatBuffers files before using the modified interfaces in code
  • types - GDJS type definitions. They were generated automatically with TSC.
  • docs - The docusaurus website and documentation.
  • scripts - A few scripts used for building.
  • code - Contains all the THNK extension's typescript code. All imports are relative to this directory: import "server"; would import code/server.
    • server - All the server-relevant code.
    • client - All the client-relevant code.
    • adapters - Contains the different adapters' implementations.
    • types - Useful type definitions: global.d.ts defines the THNK global namespace and thnk.d.ts overrides GDevelop type definitions with the additional properties THNK adds.
    • utils - Misc. Code that is relevant for both server and client.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.