- 1 Introduction
- 2 Development Overview
- 3 BotCore Overview
Bot cores are pieces of software that allow plugins to react to game events. They connect to zones as sysops and are limited to what sysops can do and what the SubGame2 server allows. Despite this they allow extensive functionality to be added to zones and are a great way to extend the game.
Most cores have been developed over long periods of time and are at various levels of maturity. As characteristic of unfunded hobbyist development projects the boring bits are the toughest to get written. Consequently, aspects such as documentation, unit tests, examples, and so forth are sparse. Being a developer requires a strong background and is not for beginners.
Contrary to popular belief, bot development is not “slamming down some sysop commands to get those bots written”. It’s actual dev work that takes considerable time and effort. Note that these examples don’t even scratch the surface of EG’s codebase. Read and understand this before telling the community you’re going to “make the next duelbot” or “get that turf bot finished fast”.
Most source for bots in EG is unavailable due to being missing, incomplete, undocumented, or having an unspecified
or restrictive license. If you want to patch existing bots, you’ll need to be well-versed in low-level disassembly. The EG and SS software ecosystems are complex webs of legacy software, unpredictable & undocumented behavior, and complicated design decisions. It’s the nature of having been developed by hobbyists volunteering their time, many of whom aren’t formally trained, for over a decade and a half. We owe them all a debt of gratitude for keeping the zone alive, functioning, and fun to play.
If this environment sounds too difficult or restricted, then SS development is not for you. If it sounds like an interesting problem to solve, then join up and let’s work together on the complex challenges the zone offers.
New development in Extreme Games must be done on the following cores:
All other cores and plugins are frozen in EG due to the complexity of maintaining infrastructure, codebases, and configuration.
Developer Requirements in EG
- Must be trustworthy & mature
- Willing to function as part of a team
- Have experience developing in C or Python. This is NOT the place to learn how to write code.
Players who don’t meet this requirements can still contribute code, but they will not have access to staff or the zone.
The development community exists to discuss nuances of SubSpace-related APIs, NOT nuances of C/C++/Python programming languages. If you are not proficient in one of these languages then development here is not for you.
- C/C++ code must conform to OpenBSD’s style(9)
- Python must conform to PEP(8)
- Patches must be consistent with preexisting code (if any)
- All code accepted for use in EG must be zlib Licensed or Public Domain for OpenCore or GPL for PyCore
The following steps will get you started with development:
- Collaborate with EG staff regarding what is needed in the zone; just because something is written does not mean it will be used. Feature additions must be part of a cohesive & coordinated vision.
- Install the testing version of subgame2 for local testing
- Fork either OpenCore or PyCore at Extreme-Games GitHub Page
- Develop and test locally to get primary functionality working
- Send pull request upstream
- If upstream meets code requirements and zone development goals it will be merged for acceptance testing in EG
- Once accepted it will be used in EG production
Currently Needed Bots
- GitHub integration (push files to server on Git commit)
- AFK detection for public freqs
- EGC rework and prizing system
- Impact Rating and public arena ranking system
- Automated league bots
- Web UI for uploading maps
- Achievement system
- Enhanced pub statistics
- Turf for public arena described here
If you are interested in creating one of the above contact zone staff for the specific details and to work out the arrangements.
BotCores are complex pieces of software and as such are all beta. Below is a summary of botcores used in EG and their high-level characteristics.
- OpenCore Repository
- API Documentation
- Example Code
- Written as a PowerBot replacement
- Open source
- C/C++/Python interface
- Written by Ekted from 2000-2005 for use in PowerBall Zone
- Primary bot core used in EG
- C/C++ interface
- Closed source
- No longer developed
- No access for continued development due to licensing
- Plugin distribution restricted due to licensing
- Restricted access to the .exe and header
- PythonBot Repository
- Lightweight, single-bot (non-core) standalone design
- Python interface
- Provides the basis for PyCore
- Deprecated in favor of PyCore