Skip to content
Brendan Walker edited this page Jun 24, 2014 · 4 revisions

###Overview All of the enemy type parameters are defined in src\content\mobs\mob_types.json. These mob types are referred to by mob spawn tables, which are in turn used by mob spawners in the map layout. The mob type defines all of the tune-able parameters of a mob's abilities, perception of the world, and constraints on their behavior. Animation and other visible properties are all configured inside the Unity editor.

###Mob Type Format

{
    "mob_types_set": [
        {
            "mob_type_name": "character_tread_gray", // Internal name of the mob, use for lookup
            "label":"TreadBot v0", // UI display name of the mob
            "max_health": 100, // Maximum health of the mob
            "max_energy": 100, // Maximum energy mob can hold
			"speed": 1, // Movement speed of the mob (wu/s)
			"vision_cone": // Vision cone parameters
			{
				"distance":5, // Vision cone range (wu)
				"angle":90 // Vision cone angle (degrees)
			},
			"perception": // Parameters for search and target selection
			{
				// Number of turns to wait before giving up on search
				// after losing sight of the target
				"orphan_turn_timeout":1, 
				// [The most salient of our perception props becomes out target
				// These weights affect the salience scoring calculation]
				// Weight given to target distance in salience score
				"saliance_distance_weight":1.0, 
				// Weight given to target energy in salience score
				"saliance_energy_weight":1.0, 
				// Weight given to target health in salience score
				"saliance_health_weight":1.0,
				// Weight given to prop status in salience score 
				"saliance_status_weight":1.0 
			},
			"abilities": // AI ability parameters
			{
				// Amount of energy that can be drained from an energy tank per turn
				"energy_tank_drain_per_turn":50 
			}			
        },
        ...
    ]
}

###Mob Spawn Table Format

{
    "mob_spawn_table_set": [
        {
            // Name references in mob spawners in map
            "mob_spawn_table_name": "character_tread",
            // Weighted list of mob types
            // Weights are all summed and then normalized on import
            "entries": [
                {
                    // matches mob type name in mob type table
                    "mob_type_name": "character_tread_gray", 
                    "weight": 2 // character_tread_gray is spawned 2/3 of the time 
                },
                {
                    "mob_type_name": "character_tread_green",
                    "weight": 1 // character_tread_green is spawned 1/3 of the time
                },
                ...
            ]
        },
        ...
}

High Level

Folder Organization

Game Design

Game Objective

Player Classes

Enemy Types

Loot

Web Server Documentation

Server Project Organization - How the files in the server project are arranged

Mob Types - Format for the mob type definitions

Room Templates - How the room templates are validated and stored in the DB

Navigation - How AI navigation is computed on the server

AI Decision Making - How AIs make decisions in response to players moves

Request Processors - How incoming JSON requests are processed

Database Query Layer - How database queries are structured and cached

Standalone And Embedded Web Server - How the stand alone and client embedded web server are structured

ASPX Web Service - How the IIS hosted web server is structured

Unity Client Documentation

Client Project Organization - How the files in the client project are arranged

UI System - Wrapper around Unity immediate mode UI and UI event handling

Asynchronous Request System - How JSON requests are sent to the web server

Game Event System - How the game state changes as a result of player actions

AI Path Finding and Steering - How the AI compute a path and drive toward path waypoints

IRC and Push Notifications - How chat and server push notifications are routed through IRC

Tools Documentation

OGMO Tile Editor

Verification Scripts

Build Scripts

Clone this wiki locally