Skip to content

Latest commit

 

History

History
94 lines (75 loc) · 3.09 KB

README.md

File metadata and controls

94 lines (75 loc) · 3.09 KB

Artwork

The Seven Spells Of Destruction is a multiplayer open world role playing game played through Discord. It is based on the 2.0 version of this game, which was a web based game played through the web.

This game has quite a long history.

Timeline of the game's development

  • 1993: This game was created by me at age 13 as a 1480 paragraph novel, similar in inspiration to "Fighting Fantasy" books by Steve Jackson and Ian Livingstone.
  • 1996: The game book was typed up into inter-word on BBC Master 128 Computer
  • 2000: The game book content was transcribed into Microsoft Word 98
  • 2001: Word 98 content converted to a web based game, completely single player. C++ backend.
  • 2003: Multiplayer features added to the game. ssod.org doman name registered. Peak player count in 2005 was 1500 concurrent players.
  • 2014: Start of development of a 3D single player Seven Spells game in Unreal Engine 4
  • 2020: Unreal Engine 4 game abandoned due to lack of resources to adapt the content to a fully open 3D world.
  • 2023: New parser/engine created for the 2004 game content to run via Discord through a bot.

Navigating the codebase

Compilation

First run php artisan app:upload-sprites from the admin web root to upload all sprite emojis to the application emojis section in the discord developer panel, and generate include/gen/emoji.h. This is required to compile the bot and is unique to the application ID.

Next:

mkdir build
cd build
cmake ..
make -j${NPROC}

Configuring the bot

Create a config.json in the directory above the build directory.

NOTE: It is EXTREMELY IMPORTANT to create secure IV/key values for the encryption. This is used to encrypt the state content sent to the user, and if an insecure configuration is placed into the config file here, it may allow selfbots and malicious users to tamper with game state. Keep these values secure and keep them secret as your token, for your the protection of the bot!

{
	"token": "token goes here", 
	"log": "log path goes here",
	"shards": 1,
	"js_thread_pool_size": 32,
	"database": {
		"host": "localhost",
		"username": "mysql username",
		"password": "mysql password",
		"database": "mysql database",
		"port": 3306
	},
	"encryption": {
		"iv": "16 character AES256 IV",
		"key": "32 character AES256 symmetric key"
	},
	"botlists": {
		"top.gg": {
			"token": "top.gg bot list token"
		},
		"other compatible bot list": {
			"token": "their token..."
		}
	}
}

Software Dependencies

  • D++ v10.0.30 or later
    • D++ must be built with -DDPP_CORO=ON
  • libcrypto/libssl
  • libmysqlclient 8.x
  • zlib
  • g++ 14.1 or later
  • cmake
  • fmtlib
  • PCRE
  • spdlog
  • screen
  • sentry-native

Starting the bot

cd ssod
screen -dmS ssod ./run.sh