This is an old revision of the document!
Table of Contents
FASERIP Online — Game Master & Artist Guide
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.
Table of Contents
Game Master Overview
The Game Master (GM) controls the world that players explore. As GM you are responsible for:
- Populating zones with NPCs (villains, allies, neutrals)
- Writing and publishing missions for players to undertake
- Balancing difficulty so both new and experienced heroes are challenged
- Advancing the story of the city over time
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.
Accessing GM Tools
- Log in with your GM account
- Create or select a character (you still need one to enter the game world)
- Once on the city map, click 🎭 GM Tools in the HUD
- A modal window opens with two tabs: Create NPC and Create Mission
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.
Creating NPCs
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.
Step by Step
- Open 🎭 GM Tools
- Make sure the Create NPC tab is active
- Fill in all fields (described below)
- Click Create NPC
NPC Fields
| 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 |
FASERIP Rank Quick Reference
| 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 |
Example NPC — Street Thug
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
Example NPC — Doctor Vex
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
Health & Karma Calculation
These are calculated automatically when you save the NPC, but here is the formula for planning:
- Health = Strength value + Endurance value
- Karma = Reason value + Intuition value + Psyche value
Example: Doctor Vex has Strength Good (10) + Endurance Remarkable (30) = 40 Health
Creating Missions
Missions give players goals to pursue in the city. A good mission tells a story, creates tension, and rewards effort.
Step by Step
- Open 🎭 GM Tools
- Click the Create Mission tab
- Fill in all fields (described below)
- Click Create Mission
- The mission will immediately appear for players in the chosen zone when they click on buildings or open the Missions panel
Mission Fields
| 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 Guide
| 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 |
Experience Reward Guide
| 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 |
Writing Good Objectives
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
Example Mission — Difficulty 2
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
Example Mission — Difficulty 4
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
Mission Design Tips
- Layer your objectives. Mix combat (defeat enemies), exploration (find X), and skill-based tasks (Reason FEAT to hack terminal) for variety.
- Match NPCs to the zone. Waterfront missions should have dock workers and smugglers. Industrial missions should have mercenaries and robots.
- Use the description to set tone. Players read this before they accept. Make it feel urgent and interesting.
- Escalate across a series. Start players with Difficulty 1–2 missions and build toward a Difficulty 5 story event.
- Leave hooks. End descriptions with an unanswered question to encourage follow-up missions. “…but who hired them?”
- Reward exploration. Create missions in every zone so players have reason to travel.
Zone Reference
| 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.
Adding Buildings to the City Map
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:
Quick Reference
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.
Art Replacement Guide
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.
General Principles
- All images should be PNG format with transparent backgrounds unless noted
- Use pixel art or comic book illustration style to match the game aesthetic
- The game uses a dark color palette — art should be designed to read well on dark backgrounds
- Retina/2x versions are recommended — create at 2× size and let CSS scale down
Element Pixel Dimensions
1. Building Icons
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.
2. Building Facade Texture
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).
3. Player Character Avatars
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.
4. Mini-Map Building Dots
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 |
5. HUD Elements
| 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 |
6. Street / Road Textures
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.
7. Background / City Atmosphere
| 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.
8. UI Panels & Modals
| 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 |
9. Zone Map Thumbnail (future)
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 |
Replacing Elements — General Process
- Create your artwork at the recommended size
- Upload to
/var/www/html/amigaz/games/faserip/public/images/(create this folder if it doesn't exist) - Edit
styles.cssto reference the image file instead of the CSS color/gradient - Edit
game.jsfor any elements generated in JavaScript (avatars, building icons, etc.) - Clear browser cache and test (Ctrl+Shift+R)
Folder Structure Recommendation
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)
Notes for Future Development
- When the Ultimate Powers Book integration is added, each power will need a 32 × 32 px icon sprite
- Combat will eventually need hit effect sprites (explosion, zap, etc.) — plan for 64 × 64 px animated PNG or spritesheet
- Character creation will add a costume builder — plan for modular body part sprites at 200 × 300 px per part
- The city will eventually support building interiors — each interior will need a background scene at 900 × 520 px
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.

