Michael Murtaugh 76c491f4e7 | 3 years ago | |
---|---|---|
public | 3 years ago | |
.gitattributes | 5 years ago | |
.gitignore | 4 years ago | |
LICENSE | 5 years ago | |
README.md | 3 years ago | |
data.js | 5 years ago | |
data.json | 3 years ago | |
dictionary.json | 5 years ago | |
dump_data_to_json.js | 3 years ago | |
interval_tasks.py | 3 years ago | |
license.txt | 5 years ago | |
npc.py | 3 years ago | |
package-lock.json | 3 years ago | |
package.json | 5 years ago | |
promo.gif | 5 years ago | |
requirements.txt | 3 years ago | |
server.js | 3 years ago | |
server.py | 3 years ago | |
serverMod.js | 5 years ago | |
serverMod.py | 3 years ago |
README.md
LIKELIKE Online
The tiniest MMORPG. Choose an avatar and hang out with your friends in a virtual version of LIKELIKE a videogame gallery in Pittsburgh, PA.
This project was created during the COVID-19 quarantine and was meant to evoke the social aspect of LIKELIKE's exhibitions.
You can mod it to create your own virtual exhibitions, multi-user environments or games.
It's designed to be extensible by just editing the data.js file and a few settings at the beginning of server.js and client.js.
The code is extensively commented but it was put together very quickly (about a 10 days) so it's not meant to be a robust, beginner-friendly tool. You'll need some node.js and javascript knowledge to adapt it to your needs. Use at your own risk.
LIKELIKE Online is built with node.js, socket.io, p5.js, and the add-on p5.play, it's hosted on glitch.com.
LIKELIKE Online is a project by Molleindustria.
Licensed under a GNU Lesser General Public License v2.1.
Publishing on Glitch
Glitch is a community and a suite of online tools to develop web applications. Glitch provides free hosting for node.js projects. Most web hosts don't give you that degree of access. Another popular platform is heroku. Glitch offers a code editor, file storage, and an intergrated terminal. You can create node applications from scratch via browser. Glitch allows you to browse and remix other people projects.
LIKELIKE Online is already structured for glitch deployment with a server.js and a package.json on the root, and a "public" folder. You can deploy this app to Glitch via github or other git repositories
You can clone LIKELIKE online by creating a Glitch account and remixing it from the web interface >>> here <<<
Alternatively you can follow this process to deploy it starting from a zip of the project folder:
-
Create a ZIP file of the project.
-
Upload it to the assets folder in your project, click it and click Copy Url
-
Starting from an empty or existing glitch project, navigate to Settings > Advance Options > Open Console
-
In the console, pull the zip file from the url (keep file.zip name, it's just a temporary file)
wget -O file.zip https:///url-to-your-zip
-
Extract it to the root folder
unzip file.zip -d .
-
Remove the zip file
rm file.zip
-
Refresh our app so the new files are shown in the editor and published
refresh
Warning A free Glitch account has a limit of 4000 requests per hour, this projects loads a lot of individual image assets so you can go over the limit pretty easily. Consider purchasing a paid account for a public-facing project.
The .env file
.env is a text file in the root folder that contains private variables, in this case admin usernames and passwords and the port used by the project. It's not published on github and it's not automatically published on glitch so you may have to create it manually and/or copy paste the content in the glitch editor and/or in your code editor if you are running is as a local project.
An example of .env file for LIKELIKE online is:
ADMINS=adminname1|pass1,adminname2|pass2
PORT = 3000
The admin names are reserved. Logging in as "adminname|pass" (nickname and password separated by a "|") will grant the user admin priviledges such as banning IP or sending special messages.
XPUB FORK
Notes on the XPUB Fork.
The version of socketio used is not the most recent. The requirements.txt file reflects the correct versions for flasksocketio etc. Note that it was important to clone and generate the documentation of these older dependencies to avoid problems with changes (namely in the first implementation I used the "to=" paramter to calls to emit and send which doesn't even give an error, but which isn't correct as the old API uses "room=").
Replacing calls to javascript's setInterval and setTimeout required the implementation of a small class called IntervalTaskMaster (See: <interval_tasks.py>). It uses pythonsocketio's start_background_task method (and hopefully remains intact if/when deployed with say uwsgi, should test this ;)
At the moment the serverMod is only partially implemented.