[ ABOUT | SETUP and RUN | CREATE A GAME | TUTORIALS | CONTRIBUTING ]
The following links and videos provide an overview of how to use LAN-Caster to build your own game. More will be added as content is created.
To write a game with LAN-Caster, you should have a basic familiarity with python 3. The links below will help:
- Python for Java Programmers (YouTube 1:00:00)
- Python Introductions
- Important Python types: dict, str, int and float.
- Other important python skills: default arguments and exceptions.
- What is LAN-Caster?
- Where to get it: https://github.com/dbakewel/lan-caster
- File Organization
- Running the Demo
- Architecture:
- Input data (Tiled): Maps and Tilesets
- Processes
- Server: game logic, steps, and mechanics
- Clients (aka players): input and display
- Networking
- How to make your own game?
-
Design
- Game Concept and Story
- Game Mechanics
- Engine Enhancements and Limitations
- Tilesets, Maps, and Code
- Working in a Team
-
Implementation
- File Structure and Revision Control
- Maps and Tilesets
- Launcher
- Adding Code
- Testing (-verbose, -profile, -test)
- Incremental Improvement
- Concept and Design
- Create Launcher and Directories
- Download Graphics and Add Credits
- Tileset
- Map
- "sprites" Layer
- Player Object on sprites Layer
- First Test
- "ground" Layer and Tiles
- "outOfBounds" Layer and Objects
- "trigger" Layer
- "helloworld" Object on trigger Layer
- servermap.py
- trigger code
- final test
- Tiled Tilesets
- Images (png) files
- Where to find and how to give credit.
- How to make your own
- Create Tileset file
- Animated tiles
- Character tiles
- Anchor point
- Using Tiles on a Map:
- Tile layers
- Tile objects
- Tiled Maps
- Map Requirements
- Tilesets
- Adding External Tilesets
Layers Types:
- Tile Layers
- Object Layers
- Well Defined (known or special) Layers
- sprites
- triggers
- inbounds
- outofBounds
- reference
- Layer Order (using black layer to help)
- Object Anchor Points vs. (x, y)
- Properties
- startclient.py
- Client Class
- init()
- run()
- Message Processing
- Update Screen
- User Input Event Processing
- Loop Timing
- ClientMap Class (intro to map rendering)
- Subclassing
- startserver.py
- Server Class
- init()
- run()
- Message Processing
- Step Processing
- Send Steps
- Loop Timing
- ServerMap Class (intro to mechanics)
- Subclassing
- StepMap Class
- Server Stepping
- Step Methods used for Game Mechanics
- initMechanicName(): Called only once when the map is loaded.
- stepMapStartMechanicName(): Called once at the start of each step.
- triggerMechanicName(trigger, sprite): Called for every trigger/sprite collision
- stepMoveMechanicName(sprite): Called for every sprite that is moving
- stepMapEndMechanicName(): Called once at the end of each step.
- -verbose server startup messages
- Player Sprites
- Move Linear Mechanic (also, intro to collisions)
- MapDoor Mechanic
- Holdable Mechanic
- Rendering (layers, shapes, map size)
- Text Styles
- Tile Animation and Character Tiles
- Triggers and Layer Visibility (Adding a Mechanic)
- Ways to Show Text
- Extending a Mechanic
- PortKey Mechanic
- Timer Mechanic
- Sprite Dictionary
- Advanced Tests
- Properties can be added in Tiled for:
- Tileset
- Tile
- Map
- Layer
- Object
- How Properties are Loaded
- Duplicate Properties
- Accessing Properties (prop-...)
- Object collisionType
- collisionType default by Layer
- engine.geometry.collides()
- example collisions
- overlap
- Example uses of collides()
- engine.stepmap.stepTriggers()
- engine.map.checkLocation()
- engine.map.findObject()
- File structure
- Maps and Tilesets
- Tangent: General vs. Hardcoded Design Decisions
- Demo Server (Global Game Logic)
- Game Mode (waitingForPlayers, gameOn, gameOver)
- waitingForPlayers Marquee Text
- Detecting gameOn
- GameOn Marquee Text and Player Clearing of Marquee Text
- Detecting gameOver
- Tracking Time
- GameOver Marquee Text
- Demo Client
- Fonts
- Making General vs. Hardcoded Design Decisions
- Demo ServerMap
- Chicken,
- Throw,
- SpeedMultiplier (mud),
- Bomb,
- RespawnPoint mechanics
- Start Map ServerMap
- lockedMapDoor
- Under Map ServerMap
- Saw
- Use of RespawnPoint
- StopSaw
- Under Map ClientMap
- Darkness
- End Map ServerMap
- Lever
- Magic Wand