Giter Site home page Giter Site logo

openatbp's Introduction

OpenATBP

Releases Badge Trello Badge Discord Badge License Badge

An open-source lobby, service, and game server for Adventure Time Battle Party.

Screenshot

Status

Currently, a handful of characters have their full kits functional, and games can be played from start to finish. Collision, pathfinding, and a few other systems still need work. For the most up-to-date progress, check the Trello board. Contributions are always welcome!

Server Architecture

Originally, Battle Party required several server-side components in order to to function:

  • Web server to serve static content/streaming assets
  • Web server that provides service/API endpoints (internal name "Facade")
  • Socket policy server to satisfy the Unity Web Player security sandbox
  • Lobby server for players to form parties and search for matches (internal name "DungeonServer")
  • SmartFoxServer2X with custom extension acting as the actual game server

To simplify development and deployment, the first three components have been combined into one piece of software, which is available under the httpserver directory.

More in-depth explanations of each component, how the client interacts with them, and how request/response packets are structured can be found in the docs/ folder. This is unfortunately not available yet, but work is slowly being done. For the time being, feel free to reference the dev-general channel in the Discord, as well as decompiled client code generated via ILSpy/dnSpy.

Development

Prerequisites

Ensure these are all installed before proceeding!

  • Git
  • Java Development Kit 11
  • SFS2X Community Edition
  • NodeJS and NPM
  • MongoDB Server

Setting up

  1. Clone the repository: git clone https://github.com/OpenATBP/OpenATBP.git
  2. Open a new terminal inside of the httpserver directory
  3. In this new terminal window, run the following command to install dependencies and download required asset files - this may take a while! npm install
  4. Copy the example config in the httpserver directory: cp config.js.example config.js - once copied, edit it to include the connection string URI for your MongoDB server
  5. Run httpserver using the following command: npm run start - if done correctly you should see App running on port 8000!
  6. Start SmartFoxServer2X once so it can generate the correct files and folders, then close it
  7. Open another terminal, this time in the root of the repository
  8. Run the following command to compile and run the lobby: .\gradlew ATBPLobby:run - if successful you should see DungeonServer running on port 6778
  9. Run the following commands to copy necessary files, then compile the game extension: .\gradlew ATBPExtension:copySFS2XLibs, .\gradlew ATBPExtension:jar
  10. Provided there weren't any errors, deploy the SmartFox extension: .\gradlew ATBPExtension:deploy - this will also copy the data, definition and zone file(s) if needed
  11. Copy the example config in the SFS2X extension directory (SFS2X/extensions/Champions, should be right next to the jar file): cp config.properties.example config.properties - once copied, edit it to include the same URI string you did in step 4.
  12. Start SmartFoxServer2X, you should see a log line indicating the extension is working: ATBP Extension loaded
  13. Finally, connect to http://127.0.0.1:8000 with an NPAPI-compatible browser such as Pale Moon to test the game!

Note that you can also run any Gradle task (gradlew commands) graphically through an IDE such as IntelliJ IDEA or Eclipse.

These instructions are subject to change, if you run into any problems or have questions feel free to open an issue here on Github or reach out to us on our Discord.

License

MIT unless specified otherwise

SFS2X Logo

openatbp's People

Contributors

cakelancelot avatar darklit avatar gabepar123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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.