Charlie Murder
 This topic has been pinned, so it's probably important
flibitijibibo  [developer] Mar 24, 2017 @ 5:53pm
Technical FAQ
This is a separate FAQ to answer common technical questions about the game.

Before I begin, I should point out that a lot of info about this game (and many others), including save/config file locations as well as general feature information, can be found on the PCGamingWiki:

http://pcgamingwiki.com/wiki/Charlie_Murder

Anyway, on with the FAQ:

Q: Who is writing this?
A: I am Ethan Lee, the PC developer for Charlie Murder, Vampire Smile, and many other games on Linux, macOS, and sometimes Windows[www.flibitijibibo.com]. Notably, I am not James Silva, the programmer at Ska Studios!

Q: What engine is this game using?
A: For this game we're using FNA[fna-xna.github.io], a reimplementation of the XNA framework. For networking, we're using a library called FNA.Steamworks to replicate the Xbox Live netcode used in the original Xbox 360 version of the game.

The full source code for both can be found here:

https://github.com/FNA-XNA/FNA
https://github.com/flibitijibibo/FNA.Steamworks

Players are encouraged to read the source if they're curious!

Q: What redistributables does this game need and why?
A: We depend on the following Windows redistributables:

- DirectX redist: While the game uses OpenGL on all three desktop platforms, on Windows we use both XInput and DirectInput for controller support.
- .NET Framework 4.0: Ska Studios' games are written in C#, and so require the .NET CLR to run.

On macOS and Linux we do not depend on anything other than the standard OS libraries. We provide a compact Mono CLR with those versions, so you do not need to install Mono to run the game.

Q: What controllers are supported?
A: We support any and all controllers that are recognized by Steam's Big Picture Mode, without the need for additional software (such as DS4Windows). When configured in Steam, your controller will automatically be mapped to an Xbox-like controller layout.

In addition to keyboard/mouse graphics, graphical prompts for both Xbox 360 and PlayStation 4 controllers are supported. Each player will have their own prompts depending on their input device.

Q: Being a console game originally, how are the controls on PC?
A: In addition to keyboard/mouse input being added, all bindings in the game are fully remappable for keyboard, mouse, and controller. The main menu and pause menu both have mouse menu support.

However, the in-game smartphone menu does not have mouse menuing, due to its small size, dense interface, varying style for each submenu, and varying location on the screen (the UI location is based on the player location and is not fixed, unlike the main/pause menus). Instead, the smartphone menu is navigated via the movement keys and the keys prompted in the HUD.

Additionally, the controller configuration menu does not support rebinding the analog stick actions (which in this case are just Move and Look).

Q: Being a console game originally, how is the options menu?
A: The following options are available to the user:

- Monitor
- Resolution
- Fullscreen/Window/Borderless Window
- VSync
- SFX Volume (0-10)
- Music Volume (0-10)
- Pause on Lost Focus
- Blood (Red or Green)

The fullscreen mode is based on the SDL_WINDOW_FULLSCREEN_DESKTOP fullscreen mode, acting more like a borderless fullscreen mode than an exclusive fullscreen mode.

VSync, when turned on, attempts to use EXT_swap_control_tear adaptive refresh, which will allow the game to simply tear momentarily instead of halting the game to a lower refresh rate in the event that it briefly misses, for example, 60Hz.

Note that the game uses a 60fps fixed timestep value, so the game will always run at ~60Hz regardless of your display's refresh rate. The VSync option is mostly recommended as a means of fixing microstuttering should your GPU not support adaptive refresh.

Q: What features in the console version are NOT available in the PC version?
A: At the moment we don't fully support guitar controllers, but a future SDL2 update will allow us to get this fixed (at least on Windows).

Additionally, online multiplayer is limited to 1 player per machine. This is based on a design conflict in the way Xbox Live and Steam handle multiple players. The Xbox supports multiple accounts as well as "guest" accounts to track each player signed in to the system, while Steam only supports 1 signed in account per game instance with no mechanism for guests, so we can only track a single player in a networked game. We hope that Valve will consider a feature like this in the future (particularly for their move into the living room), but understand that this is a very difficult technical task to undertake (which is partially why we couldn't fix this on the game's side!).

UPDATE (April 6 2017): It appears that the data we had for the game's Japanese language was baked for the 360 version, and unfortunately we do not have immediate access to the source data used to build the font texture. The strings exist, but we need to get the text on-screen! I'd like to get this added back, but I don't know if that'll happen.

Q: How can I take this game apart?
A: The easiest way to understand the game's assets is to examine the Content subsystem of FNA, as well as the Audio subsystem (particularly the XACT implementation) and MojoShader. Read the library sources to get a thorough look!

If you want to see how the game is rendered, you can do so using RenderDoc[renderdoc.org]. When launching the game, be sure the environment variable "FNA_OPENGL_FORCE_CORE_PROFILE" is exported with a value of "1".

Learn and mod to your heart's content, just promise not to use it for cheating! :^)

Q: I want to know more about the PC version, is there anything else I can read?
A: Several posts about this game's ports as well as many other ports can be found on my Patreon[patreon.com] page.
Last edited by flibitijibibo; Jul 5, 2021 @ 9:09am