_caLLaBoki_ said in Project Idea (NBA 2K16):
Hi, I was wondering if someone here could give me some pointers on how to to start with modding video games (if that's the correct term).
For a long time I've wanted to create a "client" for NBA 2K16 to play online again but I just don't know where to start, can't find anything on YouTube/forums/books that can help me just get started.
I study software development so the learning curve when it comes to coding is not so steep, I kinda just need to get something going. Any recommendations, videos, courses, books, will be highly appreciated :).
Unless you know reverse engineering, the learning curve will be very steep. We took a quick look at this franchise ~2 years ago and concluded that it'd likely take us a collective ~500h of work or so to get to a shippable product. If this doesn't discourage you, here are some things we figured out (on 2k17) while investigating:
- It uses an HTTP API for most "live service" tasks, with some (custom?) binary body serialization
- Their backend expects a special HTTPS client certificate, so if you want to sniff this traffic on newer games you have to extract the cert and key from the game
- It uses a combination of WebSockets and UDP for the game traffic
- WebSockets seemed to be used for the "neighborhood/park" feature, and UDP for the actual "match"
- Packet structure seemed very different between the two
- The game stores (caches) some files on disk that it gets from the HTTP API, this probably includes updated player lists, small patches and the like
- In order to get a playable mod, you'd have to figure out these 3 components, all without being able to sniff any data from it, and potentially find someone who has had the game installed since it was shut down and still have the cached files
- The different games did seem very similar however, so some research could probably be done on the newer (still active) games
Figuring out the HTTP API stuff seems like a good and very doable first step, after which I'd look at the UDP data (via the quick match feature or whatever it's called). If these are hosted by one of the participants and not always on a dedicated server you may be able to get at least that working fairly easily, but if you want the neighborhood/park functionality you're most likely looking at writing a game server from scratch - a very hard and time-consuming task.
After you've done all that, there's a very high probability T2 will send you a letter, yet another reason we felt like this just wasn't worth spending time on.
