User Tools

Site Tools


development:player:web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
development:player:web [2015/08/22 00:52]
fdelapena Update demo link
development:player:web [2020/09/14 12:30]
ghabry The games must be in the subdirectory. There is no absolute path.
Line 1: Line 1:
-=====EasyRPG Player for the Web=====+====== EasyRPG Player for the Web ======
  
-EasyRPG supports running games directly inside your web browser.+EasyRPG Player supports running games directly inside your web browser.
  
-If you want to test it you can play with a [[https://easy-rpg.org/play/?game=testgame-2000|Demo of our TestGame]].+If you want to test it you can play with a [[https://easyrpg.org/play/|Demo of our TestGame]]. Try also a working game: [[https://easyrpg.org/play/?game=ib|Ib]]
  
-===How does it work===+===== How it works =====
  
-Web request are asynchronous. This means that all assets like pictures and music must be fetched asynchronously. When the Player wants to display a new graphic it will appear on the desktop versions (Windows, Linux, Android, ...) immedieately but on the web it will be invisible while the file is downloaded. Once the downloaded finishes it is replaced with the real image.+Web request are asynchronous. This means that all assets like pictures and music must be fetched asynchronously. When the Player wants to display a new graphic it will appear on the desktop versions (Windows, Linux, Android, ...) immediately but on the web it will be invisible while the file is downloaded. Once the downloaded finishes it is replaced with the real image.
  
-In contrast to images and music some files are important to continue execution. When a map file is pending the Player will halt until the file is downloaded. The first halt is while the Logo is displayed on startup, it downloads the database and the maptree here. Download of map files is blocking, too. But this is usually not noticable because the download is executed while the fadeout animation plays (it will stay black when the map downloading takes longer then this).+In contrast to images and music some files are important to continue execution. When a map file is pending the Player will halt until the file is downloaded. The first halt is while the Logo is displayed on startup, it downloads the database and the maptree here. Download of map files is blocking, too. But this is usually not noticeable because the download is executed while the fade out animation plays (it will stay black when the map downloading takes longer then this).
  
-===Hosting your own games===+===== Hosting your own games =====
  
-Hosting your own games is quite simple. Just follow these three steps.+Hosting your own games is quite simple. Just follow these steps.
  
-== Deploying the Player on your server ==+==== Deploying the Player on your server ====
  
-[[https://easy-rpg.org/jenkins/job/player-js/lastSuccessfulBuild/artifact/player-js.tar.gz|Download this archive]] and extract it on your server.+[[https://ci.easyrpg.org/job/player-js/lastSuccessfulBuild/artifact/player-js.tar.gz|Download this archive]] and extract it on your server.
  
-Your server needs support for PHP (most servers support this). +You will get the following files and folder:
- +
-You will get the following files:+
  
   * index.html   * index.html
 +  * index.wasm
   * index.js   * index.js
-  * index.html.mem +  * games/
-  * games/index.php+
  
-== Preprocessing steps for games ==+Note: if you want to try it locally you need a HTTP server, using ''file:'' protocol locally will not work, install Apache httpd server (or any other) on localhost instead.
  
-Because of limitations in web browser you must convert all your ''midi'' and ''mp3'' audio files to ogg. To do this run TODO. 
  
-== Deploying a game on your server ==+==== Deploying a game on your server ====
  
-The following only apply when you use our ''index.php''.+Because RPG Maker games refer to files without extension and querying the server for every supported extension would be slow, you need to run a small tool to generate a file called ''index.json'' (containing an game file list index with extensions) for every game before uploading. The tool is called ''gencache''.
  
-Your games are expected in subdirectories of the ''games'' directory. The default game executed is the one in ''games/default''You can create further games by just putting them in subdirectories of the ''games'' directory. Because of security considerations (directory traversal) your directory name may not contain ''.'', ''\'' or ''cache''.+You can get the tool here:
  
-If your ''games'' directory is not writable for PHP create a ''cache'' folder in ''games'' and give it write permissionsYou can skip this step if ''games'' is writableYou can revoke read permission on this folder for world/others.+  * {{https://ci.easyrpg.org/job/tools-win32/lastSuccessfulBuild/artifact/bin/gencache.exe|gencache for Windows}} 
 +  * {{https://ci.easyrpg.org/job/tools-linux/lastSuccessfulBuild/artifact/gencache.tar.gz|gencache for Linux}}
  
-Run ''games/?update'' onceYou have to run this each time you change files of the game. For other games then default use ''games/?update&game=folder_name''.+Place the gencache executable in a game working folder (the folder containing RPG_RT.* files) to generate the ''index.json''Move the ''gencache'' executable to working folders for each game you want to upload and run ''gencache'' again to generate the ''index.json'' for them. Once finished you can remove (don't upload it, it's not needed) the ''gencache'' from any game folder. 
 + 
 +Your games are expected in subdirectories of the ''games'' directory. The default game executed is the one in ''games/default''. You can create further games by just by putting them in subdirectories of the ''games'' directory.
  
 Now open the ''index.html'' file and your default game should start. To play a different game pass ''?game=folder_name'' to your index file. Now open the ''index.html'' file and your default game should start. To play a different game pass ''?game=folder_name'' to your index file.
- 
-===Technical details about the server side=== 
- 
-The ''index.php'' works as a file finder which allows case-insensitive lookup of files. 
- 
-Depending on the requested ''file'' it either returns ''404'' or a ''Location''-header to the file on the server. 
- 
-This is required because Windows is case-insensitive (and original RPG2k was for Windows) and because the file extensions are not stored. ''Charset/Hero1'' could be ''Hero1.png'', hero1.bmp or ''HeRo1.xyz'', depending on which file exists. 
- 
-== Example == 
- 
-The file ''System/System1'' is requested. The server returns ''Location: games/default/System/System1.png''. The same result is expected for file ''SyStEm/systEM1''. 
- 
-== API == 
- 
-Our file finder is stored under ''src/platform/easyrpg-filefinder.php''. In case you want to replace the file finder you only have to fulfill a very simple API. 
- 
-The directory struture of the ''games'' folder is not part of the API contract. The player only expects that accessing ''games/'' invokes the file finder. 
- 
-The only GET arguments that must be supported are ''game'' and ''file''. 
- 
-''game'' is the name of the game that is executed. 
- 
-''file'' is the name of the file the game requests. 
- 
-When a ''file'' is requested it must return a downloadable representation of the file. How doesn't matter, it can be an ''octet-stream'' or a redirect via ''Location''-header. If the file is not found ''404'' must be returned. 
development/player/web.txt · Last modified: 2021/11/11 09:38 by ghabry