Skip to content
Snirozu edited this page Sep 25, 2024 · 28 revisions

Downloads

Psych Engine
Version
Stable Builds Dev Builds Source Code
0.7.1h GitHub Releases Nightly Link Github Repository

FAQ

Playing Questions

When downloading a mod from the host the mod re-downloads again and doesn't get recognized by the game!

Check if the host has the same chart path and data and mod directory name

Or the Host should re-verify the mod in the mods menu

How do I import a mod to this engine?

Via the Mod Downloader, installing mods by dragging and dropping modpacks to the mods folder is not recommended and can cause issues.

Can I use EXEcutable mods?

Yes, they will be automatically ported by the engine.

How can I host the game by myself?

Launch the run-server.bat batch file in the same directory where you launch the game, follow the steps to install the required server components and that should launch the server!

The other player should connect to ws://localhost:2567 (if you're playing locally). If you want to expose the server to the internet or just one person then you can use port forwarding tools like Hamachi or Ngrok.

Why do I get blocked from the server? (*.onrender.com Server)

That means the server is down.

The server is hosted on a free host (render.com) that puts inactive servers to sleep, when someone wakes up the server by sending something to it the server takes about one and a half minutes to launch again. If the server doesn't respond for longer than 3 minutes then probably the hosting is down.

Compiling Questions

"Unexpected ." Exception

Update Haxe.

"Type not found..." Exception

Make sure to install the proper libraries and versions of them. The libraries and their versions are listed in the hmm.json file. You can use hmm install to install them or manually using HaxeLib command haxelib install <library> <version>. Restarting the OS is recommended after installing all of the libraries.

Mods

Mods are regular Psych Engine mods with a mod_url.txt which tells the other player which URL they should download in order to get that mod! The best way is to get them from the in-game downloader, there you can search GameBanana mods or enter URLs into the search bar and install them directly to the game!
Alternatively, you can do it the old-fashioned way (https://www.youtube.com/watch?v=fHadYFdeYoI) (not recommended!)

Setting URLs for a Mod/Skin

Go to the Setup Mods option in the Online Settings Menu and paste the DIRECT download link into the option labeled after that mod
MEGA links will probably not work!

Upload Sites

Recommended

Not Recommended (or will not work)

  • Discord - Discord attachments can expire.
  • GameBanana - Depending on the server's mood, the download speed can sometimes be slow or decent. If you do upload your skin there please do it only with assets that you've created.

Skins

Skins are Psych Engine mods that contain files with custom characters!

Creating Skins

Instructions:

Create a new character inside the editor and make two versions of it, the first should be for the Opponent and the second for the Player.
Important: The Opponent character should be named after your skin and The Player character should have the suffix "-player" after its name.
These two created characters should be placed in the "characters/" directory INSIDE of your newly created modpack.

Important: To make your skin available for other people, upload a zip file with your skin mod-pack inside of it to some cloud storage service, then redownload your skin from the Mod Downloader menu by pasting the URL of that uploaded zip file.

Also, there's a video tutorial on how to make a skin: https://www.youtube.com/watch?v=0XT2vKgB-Aw

The File Hierarchy should look like this.

╚ Psych Online/
 ╚ mods/
  ╚ Skin Mod/
   ╚ characters/
    ╚ characterName.json
    ╚ characterName-player.json
   ╚ images/
    ╚ characters/
     ╚ characterImage.png
     ╚ characterImage.xml
   ╚ mod_url.txt

Modding API

Documentation

  • sendMessage(type, message)

Sends a message to the other player.
These can be received by using the onMessage(type, message) Lua event.

  • playsAsBF()

Checks whether or not you play as the Player (Boyfriend)

  • isRoomOwner()

Checks whether or not you are the Owner of the current room

  • hasRoomPerms()

Checks whether or not you have Host permissions

  • isRoomConnected()

Checks whether or not you are connected to a room

  • getStateSong()

Returns the name of the current song, set by a Host

  • getStateFolder()

Returns the folder for the current song.

  • getStateDiff()

Returns the difficulty of the current song.

  • getStateModDir()

Returns the folder of the currently selected Mod

  • getStateModURL()

Returns the URL for the currently selected Mod

  • getStateIsPrivate()

Checks whether or not the current room is publicly listed.

  • getStateIsStarted()

Checks if the game has started.

  • isSwapSides()

Checks if the sides are swapped, (you probably should use playsAsBF() instead)

  • isAnarchyMode()

Checks if the Anarchy Mode is enabled

⚠ Below are Player related functions, Player 1 is always the Host, and Player 2 is the Joining player.

  • getPlayerScore(player:Int)

Returns Player 1/2 score.

  • getPlayerMisses(player:Int)

Returns Player 1/2 misses.

  • getPlayerSicks(player:Int)

Returns Player 1/2 sicks.

  • getPlayerGoods(player:Int)

Returns Player 1/2 goods.

  • getPlayerBads(player:Int)

Returns Player 1/2 bads.

  • getPlayerShits(player:Int)

Returns Player 1/2 shits.

  • getPlayerAccuracy(player:Int)

Returns Player 1/2 accuracy from 0 to 100.

  • getPlayerRating(player:Int)

Returns Player 1/2 rating.

  • getPlayerName(player:Int)

Returns Player 1/2 name.

  • getPlayerHasLoaded(player:Int)

Checks if Player 1/2 is ready.

  • getPlayerHasEnded(player:Int)

Checks if Player 1/2 has ended the song.

  • getPlayerPing(player:Int)

Returns Player 1/2 ping in milliseconds.

  • getPlayerSkinMod(player:Int)

Returns Player 1/2 skin mod folder.

  • getPlayerSkinName(player:Int)

Returns Player 1/2 skin character name.

  • getPlayerSkinURL(player:Int)

Returns Player 1/2 skin mod URL.