HOWTO-Fangames
The ScummVM development team is contacted fairly regularly by users asking about how to create games to run within ScummVM. This HOWTO is a response to this Frequently Asked Question and covers writing a game for engines supported by ScummVM.
Initial Points:
- Development of new games is not really within the aims of the ScummVM project i.e. "to provide reimplementations of the interpreters for existing 2D point and click adventure games", so the ScummVM developers are unlikely to be able to help directly with authoring of a new game.
- Questions about authoring tools etc. are better directed to the associated author communities in the relevant forums listed below.
- It should be noted that other non-ScummVM supported systems for Point and Click game development exist, and the authoring tools for these may be easier to use and more suited to your game. These are listed below, with AGS being probably the most popular and supported system with tools and a large developer community.
- However, if fans of point and click games are motivated to create new games for ScummVM, this is something which we don't want to discourage.
- Note "new" in the above. Writing a game based on existing characters or story, a sequel or prequel to a supported game without permission from the rights holder can cause legal issues and should be avoided.
See Fan Fiction (Legality) which has very similar issues.
The team may offer some advice if asked, but this should not be considered as binding legal opinion (We Are Not Lawyers). - Also, we highly discourage writing fangames for the SCUMM engine. As is indicated by the preceding fan-fiction link, LucasArts Legal have a history of pursuing any unauthorised use of their characters, stories etc. by fans.
- Especially reusing any significant amount of artwork, animation, sound or music extracted (even with modifications) from an existing game (without permission from the rights holder) is likely to cause issues. This should be noted as it applies to most of the (fan)games which have been released as freeware, unless their README/LICENSE states otherwise (Public Domain, derivative works allowed etc.).
- Note "new" in the above. Writing a game based on existing characters or story, a sequel or prequel to a supported game without permission from the rights holder can cause legal issues and should be avoided.
There are two ways to do this with ScummVM:
1. Code a new game engine targeted to ScummVM OSystem, then write a game targeted for this engine.
- This is not recommended.
It does allow complete flexibility of design, but it doubles the workload as the engine and game will both need developing in parallel. It also means that your game will not run with the standard ScummVM release binaries.
However, if your engine is complete and the game is finished, then you should approach the ScummVM team about adding the stable engine to the main source code tree to allow ongoing support.
This has occurred with at least one engine so far: Sword25.
Otherwise, you will personally need to distribute a modified ScummVM with your engine code added. This has the side effect of requiring your engine code to be released under the same license as ScummVM i.e. GPL, though this does not affect your rights to your game data i.e. that is not GPL, so you can still sell your game if desired.
2. Write a game targeted for an existing engine.
- This is recommended, however:
Only a few of the engines have publicly available authoring tools.
Developing for any other engine would require the author to develop their own tools, which is not a trivial task as a full understanding or specification for the engine would be needed.
This approach has the advantage that it will work with the standard ScummVM release binaries with no issues around developing or adding new engine code. The engines which are known to support authoring tools and thus currently have a number of "fangames" also have detectors which will detect and add entries for unknown games, though upon game completion contacting the ScummVM team will allow a full detection entry to be added of the stable final version.
Point and Click Engines with Publicly Available Authoring Tools
- Engines supported by ScummVM
- Engines with work-in-progress support in the ScummVM Git repository
- Non-ScummVM game engines
- Godot, for example with the Escoria framework
Game Creation Tips
Creating a game is closer to writing than programming, though both skills are required. For a good game, the characters, story and dialogue should come first. It is suggested to write the game in a text adventure system such as Inform (Z Machine, Glulx) as a prototype, before you commit to drawing artwork and creating game scripts for the graphical point and click version. Since point and click interfaces are basically implicit "Verb-Noun" interface i.e. (Open) (Door), this should map fairly easily.