You're probably wondering what the purpose of this thread is. When you develop something, it's nice to keep a record of where you are, where you've been and why you did what you did. In software it's generally stated that your first implementation of something is absolute garbage, and the second (or beyond) is the "golden code". I'm too lazy to set up a blog, so this is a good place for me to do this kind of thing. It also helps to write it to an audience (who has no guarantee to understand what you're talking about), too often do
Introduction
A multiplayer, client-server text adventure game platform. The original iteration should be an engine moreso than a game.
Requirements
- Re-implementable. Anyone with an understanding of SQL and basic networking (port forwarding, firewall) should be able to deploy a server.
- Friendly client. The server requires a little background knowledge, but the client itself should be extremely easy to use.
- Keep remote connections in mind. Handle AFK players, disconnects etc. gracefully.
- Clean and customizable. Any experienced C# dev should be able to write their own code and modify the engine without wanting to pull their hair out.
- No third party dependencies.
- Simplistic GUI. A text area that outputs the story, a textarea below to enter commands, a party window (for sake of usability) and inventory window.
- MSSQL backend. Absolutely no inline queries, only stored procedures.
- Map contains three main classes
- Title
- Description
- ID
- A list of tilesets that the zone contains. (possibly a dictionary, key could be floor# and value could be the tileset)
- Can possibly house zone wide debuffs, auras, missions
- Title
- Description
- ID
- List of tiles (generic list should do)
- Auras (debuffs, w/e)
- Events (generic triggers such as possible fight, treasure, or specific story events)
- ID
- Coords (An X, Y entry)
- Walls (A set of 4 booleans for each cardinal direction indicating if the path is accessible; perhaps not boolean, destructible walls or one way walls are a possibility)
- Coords and Walls can determine any available neighbors. Perhaps a list of tile IDs can cache neighbors so it isn't a heavy calculation each step on large tilesets.
More later...