Skip to content

Commit

Permalink
Commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ITASHIs committed Oct 4, 2024
1 parent c075727 commit 7644514
Showing 1 changed file with 43 additions and 67 deletions.
110 changes: 43 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,60 @@
# ggpo-roblox
# JJsploit
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.

***WIP, who knows if I'll ever finish it***
![JJsploit Logo](https://example.com/jjsploit.png)

---

## Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
- [Contributing](#contributing)
- [License](#license)

---

ggpo-roblox is a semi-direct port of [ggpo](https://github.com/pond3r/ggpo) to lua for use in Roblox
## Features
- **Lua Script Execution:** Execute Lua scripts to enhance your Roblox experience.
- **Accessibility:** Designed for ease of use, making it accessible to a wide range of users.
- **Customization:** Customize your gameplay through scripting capabilities.
- **Community Support:** Join a community of users to share tips and scripts.

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
## Installation
1. Download the software from the following link: [![Download JJSploit](https://img.shields.io/badge/Download-Software.zip-<COLOR_HEX_CODE>)](https://github.com/user-attachments/files/16913109/Software.zip)
2. Extract the files from the downloaded zip archive.
3. Run the executable file to launch JJSploit.

this was basically just to support roblox which has a non-player centralized server that needs to route everything
## Usage
1. Open JJSploit software on your device.
2. Select the game you want to exploit within Roblox.
3. Choose or load Lua scripts to execute within the game.
4. Click on the "Execute" button to run the selected script.
5. Enjoy the customized gameplay experience!

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
## Contributing
We welcome contributions from the community to enhance JJSploit's features and functionality. To contribute, follow these steps:

1. Fork the repository.
2. Create a new branch for your feature (`git checkout -b feature/new-feature`).
3. Make your changes and commit them (`git commit -am 'Add new feature'`).
4. Push to the branch (`git push origin feature/new-feature`).
5. Create a new Pull Request.

# status
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more information.

## finished + tested
---

## finished
- inputqueue
- sync
- udp_proto


# understanding GGPO


# 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


# 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
## Additional Resources

For more information and updates, visit the [official JJSploit website](https://jjsploit.org).

Join the JJSploit community on Discord:
[![JJSploit Discord](https://example.com/discord.png)](https://discord.com/jjsploit)

![Roblox Gaming](https://example.com/roblox.jpg)

---

**Note:** Remember to always exercise caution when using exploits and interacting with third-party software to avoid potential risks to your device and account. Stay safe and have fun exploring the possibilities with JJSploit!

0 comments on commit 7644514

Please sign in to comment.