Last updated: February 2026 — v1.0
This page covers everything a Game Master needs to run the game, how to build missions, and a complete guide for artists replacing placeholder graphics with original artwork.
The Game Master (GM) controls the world that players explore. As GM you are responsible for:
There is currently one GM account per server. The GM flag is set directly in the database:
sqlite3 /var/www/html/amigaz/games/faserip/superhero_mmo.db \ "UPDATE users SET is_gm = 1 WHERE username = 'yourusername';"
Log out and back in after running that command. The 🎭 GM Tools button will appear in the top-right of the game HUD.
Tip: You can have the GM Tools modal open while watching the live map. Other players' movements are visible in real time behind the modal.
NPCs (Non-Player Characters) are the villains, allies, and bystanders that populate the city. Every NPC has a full set of FASERIP stats just like a player character.
| Field | Description | Notes |
|---|---|---|
| NPC Name | The character's name as it appears in-game | Keep it memorable. E.g. “Doctor Vex”, “Street Thug” |
| Description | Background, appearance, motivation | Players may see this when they investigate a building |
| Fighting | Combat skill and martial ability | Controls hit chance in melee |
| Agility | Speed, reflexes, acrobatics | Affects dodge and initiative |
| Strength | Physical power | Determines melee damage and lifting |
| Endurance | Stamina and toughness | Used to calculate max Health |
| Reason | Intelligence, problem solving | Affects tactical decisions |
| Intuition | Awareness, initiative | Higher = acts earlier in combat |
| Psyche | Mental fortitude, willpower | Resistance to mental powers |
| Villain/Enemy | Checked = hostile to players | Uncheck for allies and neutrals |
| Zone | Which city district the NPC appears in | Must match a zone players can visit |
| Rank # | Name | Numeric Value | Suggested Use |
|---|---|---|---|
| 1 | Feeble | 2 | Civilians, minions |
| 2 | Poor | 4 | Street level thugs |
| 3 | Typical | 6 | Average trained criminal |
| 4 | Good | 10 | Experienced street villain |
| 5 | Excellent | 20 | Minor supervillain |
| 6 | Remarkable | 30 | Serious threat |
| 7 | Incredible | 40 | Major villain |
| 8 | Amazing | 50 | Boss-level threat |
| 9 | Monstrous | 75 | Top tier villain |
| 10 | Unearthly | 100 | Near-cosmic power |
Name: Street Thug Description: Low-level criminal. Works for hire. Not bright, but dangerous in numbers. Fighting: Poor (2) Agility: Typical (3) Strength: Typical (3) Endurance: Typical (3) Reason: Poor (2) Intuition: Typical (3) Psyche: Poor (2) Villain: Yes Zone: Warehouse District
Name: Doctor Vex
Description: Disgraced chemist turned supervillain. Controls molecular bonds.
Wears a silver containment suit. Ruthless and calculating.
Fighting: Good (4)
Agility: Excellent (5)
Strength: Good (4)
Endurance: Remarkable (6)
Reason: Incredible (7)
Intuition: Excellent (5)
Psyche: Remarkable (6)
Villain: Yes
Zone: Industrial Zone
These are calculated automatically when you save the NPC, but here is the formula for planning:
Example: Doctor Vex has Strength Good (10) + Endurance Remarkable (30) = 40 Health
Missions give players goals to pursue in the city. A good mission tells a story, creates tension, and rewards effort.
| Field | Description | Notes |
|---|---|---|
| Mission Title | Short, punchy name | E.g. “Trouble at the Docks”, “The Vex Gambit” |
| Description | Full mission briefing | This is what players read. Set the scene! |
| Zone | Which district the mission takes place in | Players must be in this zone to see it |
| Difficulty | 1 (Easy) to 5 (Extreme) | See difficulty guide below |
| Objectives | One objective per line | Each line becomes a checklist item |
| Experience Reward | XP awarded on completion | See XP guide below |
| Difficulty | Stars | Recommended For | Suggested NPC Ranks |
|---|---|---|---|
| 1 | ⭐ | Brand new heroes, solo play | Feeble to Poor |
| 2 | ⭐⭐ | New heroes with some experience | Poor to Typical |
| 3 | ⭐⭐⭐ | Experienced heroes or small groups | Good to Excellent |
| 4 | ⭐⭐⭐⭐ | Veteran heroes, team recommended | Remarkable to Incredible |
| 5 | ⭐⭐⭐⭐⭐ | Elite heroes only, major story event | Amazing and above |
| Difficulty | Suggested XP | Notes |
|---|---|---|
| 1 — Easy | 50–100 | Introductory missions |
| 2 — Moderate | 100–200 | Standard missions |
| 3 — Challenging | 200–350 | Requires effort |
| 4 — Hard | 350–500 | Significant challenge |
| 5 — Extreme | 500–1000 | Reserved for major story events |
Objectives should be specific and actionable. Write one per line in the Objectives field.
Good objectives:
Locate the source of the chemical leak Defeat the security robots guarding the lab Find and recover the stolen isotope container Escape before the building detonates
Avoid vague objectives:
Do stuff at the factory ← too vague Win ← meaningless
Title: Trouble at the Docks Zone: Waterfront Difficulty: 2 Description: An anonymous tip-off warns of a late-night cargo delivery that isn't on any manifest. Coast Guard is stretched thin. It's up to you. Dock workers have been acting scared. Something is wrong down there. Objectives: Investigate the suspicious warehouse on Pier 7 Interrogate the dock foreman Defeat the smuggling crew (3–5 thugs) Recover the stolen medical supplies XP Reward: 150
Title: The Vex Gambit Zone: Industrial Zone Difficulty: 4 Description: Doctor Vex has seized control of the Northside Power Station. He's threatening to destabilize the city grid unless his demands are met. SWAT is pinned down at the perimeter. You're going in. Watch out — he's built defensive turrets and has hired backup. Objectives: Breach the power station perimeter Neutralize Doctor Vex's mercenary guards Shut down the molecular destabilizer (Reason FEAT required) Defeat Doctor Vex Restore power to the grid before the backup timer expires XP Reward: 450
| Zone ID | Display Name | Tone | Best Mission Types |
|---|---|---|---|
| central_city | Central City | Civic, high-profile | Bank robberies, political threats, public events |
| warehouse_district | Warehouse District | Gritty, criminal | Smuggling, gang wars, hideout raids |
| downtown | Downtown | Urban, civilian-heavy | Shopping mall heists, hostage situations |
| industrial_zone | Industrial Zone | Dangerous, technical | Factory sabotage, chemical threats, robots |
| waterfront | Waterfront | Noir, smuggling | Drug/weapons smuggling, piracy, dock raids |
Buildings available per zone are defined in game.js inside the CITY_BUILDINGS object. Each building has an id, name, type, x/y position, icon, and color. New buildings can be added there by editing the array.
Buildings are defined entirely in game.js — no database or server restart required. You can add as many as you like to any zone by editing the CITY_BUILDINGS object. See the standalone reference page for full details:
Each building entry looks like this:
{ id: 'my-building', name: 'My Building', type: 'warehouse', x: 200, y: 150, icon: '🏗️', height: 120, color: '#3a2a1a' }
| Field | Description |
|---|---|
id | Unique identifier — no spaces, use hyphens. Must be unique across ALL zones |
name | Display name shown on hover and in the location panel |
type | Controls description text shown to players. See type list on the buildings page |
x | Horizontal position in pixels from the left edge of the map canvas |
y | Vertical position from the top. The horizontal road sits at y:220, vertical road at x:430 |
icon | Any emoji — will be replaced by original art later |
height | Building height in pixels. Range 60–240 works well |
color | Hex color for the building face. Dark tones read best on the night-sky background |
The map canvas is 900 × 520 px. Buildings are 130 px wide and labels extend 30 px below the base. After editing, just refresh the browser — no server restart needed.
The current game uses emoji and CSS-generated shapes as placeholder art. All of these are designed to be swapped out for original artwork at any time. This section tells artists exactly what to create and at what size.
Each building currently shows a large emoji (🏦 🏭 ⚓ etc.) centred on the building face.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Building icon | 96 × 96 px (display: ~40px) | PNG, transparent | One icon per building type. See type list below. |
| Building icon @2x | 192 × 192 px | PNG, transparent | For retina displays |
Building types needing icons:
government (City Hall) bank (Central Bank) police (Police HQ) hospital (City Hospital) plaza (Central Plaza) residential (Apartments, towers) media (News station) education (Library) warehouse (Storage buildings) criminal (Chop shop, hideout) villain-lair (Evil lair — make it look ominous!) transport (Rail yard, docks) factory (Industrial buildings) utility (Power station) science (Research lab) underground (Sewer access) junkyard (Scrapyard) market (Fish market, shops) restaurant (Dining) office (Corporate towers) hotel (Grand Hotel) sports (Stadium) museum (City Museum) docks (Shipping) landmark (Lighthouse)
To swap an icon, in game.js find the building entry and change the icon field from an emoji to an image tag, then update createBuildingEl() to render <img> instead of textContent.
The building face (the main rectangle) is currently a CSS gradient. It can be replaced with a tiled or stretched texture image.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Building facade tile | 130 × 200 px | PNG or JPEG | Tiled vertically for taller buildings |
| Window sprite sheet | 80 × 60 px (4 frames) | PNG, transparent | Rows: lit / dim / off / flickering |
Each building's facade is rendered at 130 px wide and a variable height defined by the height property in CITY_BUILDINGS (range: 60 px – 240 px).
Heroes currently display as the 🦸 emoji. These will be replaced with actual character sprites.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Hero avatar (standing) | 44 × 44 px | PNG, transparent | Base display size on map |
| Hero avatar @2x | 88 × 88 px | PNG, transparent | Recommended source size |
| Hero avatar (walking, 4 frames) | 88 × 88 px per frame | PNG spritesheet | Future animation — 4 frames horizontal |
| Other player avatar | 44 × 44 px | PNG, transparent | Slightly different pose/colour from self |
Avatar colors should distinguish your hero (warm/gold tones) from other players (cool/blue tones) at a glance.
To replace avatars, in game.js find createAvatarEl() and change the el.textContent line to set el.innerHTML with an <img> tag instead.
The mini-map shows tiny colored rectangles for each building. These can be replaced with small icon sprites.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Mini-map building icon | 14 × 14 px | PNG, transparent | Tiny silhouette, one per building type |
| Mini-map player dot | 8 × 8 px | PNG or CSS circle | Green for self, blue for others |
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Health bar fill texture | 1 × 18 px (tiled) | PNG | Tiled horizontally, replaces CSS gradient |
| Karma bar fill texture | 1 × 18 px (tiled) | PNG | Tiled horizontally |
| HUD background panel | full width × 80 px | PNG or SVG | Replaces CSS gradient header |
| Zone name banner | 300 × 36 px | PNG, transparent | Replaces text-only zone label |
Roads are currently CSS-drawn rectangles with dashed lines.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Road horizontal tile | 60 × 38 px | PNG | Tiled horizontally across full width |
| Road vertical tile | 38 × 60 px | PNG | Tiled vertically |
| Intersection tile | 38 × 38 px | PNG | Placed at road crossing point |
| Road marking (dash) | 30 × 3 px | PNG, transparent | Centre line dash |
Roads are rendered inside drawStreets() in game.js. Replace the div background styles with background-image CSS pointing to your texture files.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| City sky background | 1920 × 520 px | JPEG or PNG | Dark night city skyline, parallax layer |
| Ground tile | 40 × 40 px | PNG | Repeating city ground texture |
| Atmospheric overlay | 1920 × 520 px | PNG, 30% opacity | Fog, smog, or comic halftone effect |
The city map background is set via CSS on .city-map-container. Replace the current background gradient lines with background-image: url(…) for your artwork.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Location panel background | 310 × auto px | PNG, 9-slice or scalable | Replaces dark gradient box |
| Modal background | 620 × auto px | PNG, 9-slice | Comic book panel border style recommended |
| Button normal state | 200 × 50 px | PNG, 9-slice | Replaces CSS gradient button |
| Button hover state | 200 × 50 px | PNG, 9-slice | Brighter or shifted version |
| Activity log panel | 300 × full height px | PNG, tiled vertically | Dark sidebar |
When zone travel is implemented as a full visual screen, each zone will need a preview image.
| Element | Recommended Size | Format | Notes |
|---|---|---|---|
| Zone thumbnail | 400 × 250 px | JPEG | Bird's eye illustration of the zone |
| Zone thumbnail hover | 400 × 250 px | JPEG | Brighter/highlighted version |
/var/www/html/amigaz/games/faserip/public/images/ (create this folder if it doesn't exist)styles.css to reference the image file instead of the CSS color/gradientgame.js for any elements generated in JavaScript (avatars, building icons, etc.)public/
images/
buildings/
bank.png
police.png
hospital.png
villain-lair.png
... (one per building type)
avatars/
hero-self.png
hero-other.png
ui/
hud-bg.png
location-panel-bg.png
modal-bg.png
btn-normal.png
btn-hover.png
map/
road-h.png
road-v.png
intersection.png
city-sky.png
ground-tile.png
icons/
minimap-bank.png
minimap-police.png
... (one per building type)
FASERIP Online is a fan project. Marvel Superheroes and the FASERIP system are the property of their respective copyright holders. All original code and art in this project are independent works.