Difference between revisions of "HOWTO-Fangames"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Added Wintermute to Non-ScummVM Game Engines)
m (Shift AGS to the "Engines upported by ScummVM" section)
 
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
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.<br>
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:
Initial Points:
Line 7: Line 7:


* 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.
* 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.<br> See [http://en.wikipedia.org/wiki/Fan_fiction#Legality Fan Fiction(Legality)] which has very similar issues.<br> The team may offer some advice if asked, but this should not be considered as binding legal opinion (We Are Not Lawyers).<br>
** 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.<br> See [http://en.wikipedia.org/wiki/Fan_fiction#Legality Fan Fiction (Legality)] which has very similar issues.<br> The team may offer some advice if asked, but this should not be considered as binding legal opinion (We Are Not Lawyers).<br>
** 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.
** 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 a existing game (without permission from the rights holder) is especially 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.).
** 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.).


There are two ways to do this with ScummVM:<br>
There are two ways to do this with ScummVM:<br>
1. Code a new game engine targeted to ScummVM OSystem, then write a game targeted for this engine.
1. Code a new game engine targeted to ScummVM OSystem, then write a game targeted for this engine.
: This is not recommended.<br>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.<br> 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.<br>This has occurred with at least one engine so far: [[Sword25]]<br>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.<br>
: This is not recommended.<br>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.<br> 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.<br>This has occurred with at least one engine so far: [[Sword25]].<br>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.
2. Write a game targeted for an existing engine.
: This is recommended, however:<br> Only a few of the engines have publicly available authoring tools.<br>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.<br>This approach has the advantage that it will work with the standard ScummmVM 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.<br>
: This is recommended, however:<br> Only a few of the engines have publicly available authoring tools.<br>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.<br>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 ==
== Point and Click Engines with Publicly Available Authoring Tools ==


* Engines supported by ScummVM
* Engines supported by ScummVM
** [[AGI]]: [[AGI/Development]] , [http://forums.scummvm.org/viewforum.php?f=19 AGI/SCI Fangame Creation (Forum)]
** [[AGI]]: [[AGI/Development]], [[AGI/Fan_Games]], [https://forums.scummvm.org/viewforum.php?f=19 AGI/SCI Fangame Creation (Forum)]
** [[SCI]]: [[SCI/Development]] , [http://forums.scummvm.org/viewforum.php?f=19 AGI/SCI Fangame Creation (Forum)]
**[https://en.wikipedia.org/wiki/Adventure_Game_Studio AGS (Adventure Game Studio)]
** [[SCI]]: [[SCI/Development]], [[SCI/Fan_Games]], [https://forums.scummvm.org/viewforum.php?f=19 AGI/SCI Fangame Creation (Forum)]
** [[SCUMM]]: [[SCUMM/Fan_Games]], [https://github.com/AlbanBedel/scummc/wiki ScummC] [https://code.google.com/p/scummgen/ ScummGEN]
** [[Wintermute]]: [[Wintermute/Development]], [http://dead-code.org Wintermute Engine Development Kit]


* Non-ScummVM Game Engines
* Engines with work-in-progress support in the ScummVM Git repository
** [http://en.wikipedia.org/wiki/Adventure_Game_Studio AGS (Adventure Game Studio)]
** [[SLUDGE]]: [[SLUDGE/Development]], [https://opensludge.github.io/ SLUDGE Development Kit]
** [http://opensludge.sourceforge.net SLUDGE (Scripting Language for Unhindered Development of a Gaming Environment)]
**[[WAGE]]: [[WAGE/Development]], [https://en.wikipedia.org/wiki/World_Builder World Builder]
** [http://en.wikipedia.org/wiki/World_Builder World Builder]
 
** [http://dead-code.org Wintermute Engine Development Kit]
* Non-ScummVM game engines
**[https://godotengine.org/ Godot], for example with the [https://godotengine.org/article/our-point-click-framework-finally-out Escoria framework]


== Game Creation Tips ==
== 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 [http://en.wikipedia.org/wiki/Inform 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
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 [https://en.wikipedia.org/wiki/Inform 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.
should map fairly easily.

Latest revision as of 21:14, 22 April 2022

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.).

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

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.