beyond-all-reason / beyond-all-reason/RecoilEngine

Safe map archive format

Open
#2,972 11 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
679
Forks
290
Avg merge
3d 2h
Merged PRs (30d)
40

Description

Following a brief discussion on Discord (ending [here](https://discord.com/channels/549281623154229250/554307356360441876/1503103112687386714)) surrounding an existing infrastructure issue: https://github.com/beyond-all-reason/infrastructure/issues/8 and the desire to test maps online in a lobby but without requiring the map go through normal approval processes or expose clients to scripting attacks from unvetted scripts in map archives.

As an alternative to an infrastructure-based solution to automate (or mostly automate) the approval of safe maps, it seemed to me that the underlying issue is simply that scripting attacks are possible in maps, via functionality that - as I understand it - the project is moving away from anyways.

The most restrictive version of this is a map archive format which has no scripting whatsoever (i.e. `.json` files instead of `.lua`, or whatnot). Its possible that a more forgiving format could be supported, so that lua-based functionality could still work, while still being able to guarantee to clients that malicious map files couldn't do any harm to their system. As Marek pointed out on discord, however, the impetus would first be upon the engine to support this map archive format.

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points. Start by identifying the engine’s map-archive loading and scripting boundaries, then define the archive format and client safety guarantee before implementation. Done means the engine supports the proposed format and unvetted map archives cannot execute harmful scripts.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.