My goal is for the framework to be a foundation for building any type of action RPG game. There are very few essential elements. You can use the inventory, quests, medals, enemy AI, and implement some character development stuff to create a game that plays like World of Warcraft. You could use the inventory and add character development stuff to make a game that plays like Diablo. You could also make a game that plays like Secret of Mana. You could lose the character development and make a straight-up action hack-and-slash or PvP game.
With that in mind, there are a lot of features that would be nice to provide but don't make sense to add them to the framework itself. Here are three different ways that features can be provided to people using the framework.
Modules - These are libraries of their own that you can plug into any game that uses the framework. They add additional features that the framework doesn't provide. The reason these things exist as modules instead of being part of the framework is:
1. These are less common features. There's no sense in including a mailbox system in all games when only 5% of them will use it.
2. The modules offer options. There could be three different modules you can pick from to display party members on the screen. One might use a very compact display, which would be good for large parties. In a game where you'll only have 3 people in a party, you can use a different module that offers a larger display.
The modules are libraries that you include in your project. They may require some effort to integrate with your game but it should be minimal. For example, to integrate an auction house system you need to create an NPC that shows the auction house interface when the player interacts with them. Each module will come with a demo that shows what you need to do to integrate the module with your game.
Demos - These are things you can already create using the framework. You don't need any extra support from the framework, you just need to use what it provides. This includes different types of effects, attacks, and AI. People can use these demos to learn how to use the framework and implement similar things in their own projects. Demos can be provided as standalone downloads that reference the framework, but aren't libraries themselves. They can also be provided with the framework in its sample game.
Framework - The features that belong as part of the framework are ones that will be widely used and/or can be provided in a generic way. The most essential features need to be in the framework. It also contains highly customizable features, like abilities and conditions, that can be used to create a wide range of things.
Ideas for Modules:
- Variable-size inventory
- Changing inventory size at runtime
- Items that span multiple slots
- Mouse support
- Party member display (different styles)
- Trading interface
- Auction house
- Mailboxes
- Player-owned houses (that are saved and loaded)
- Time of day or a day/night system
- Friendly AI (ex: summoned monsters)
- Stun effects
- Instanced content
Health and mana regeneration(added in v10)- Random stat bonuses on equipment
- Help screen
- More interesting enemy AI in the sample game
Support for multiple columns in ability list(added in v10)Info bar (shows on-screen tips/hints)(added in v10)A proc to create graphical effects that follow the player (like animated overlays)(added in v10)A proc for creating AoE graphical effectsComing in v11Dropping items on the map(added in v10)Picking up items and powerups(added in v10)- Graphical on-screen menu for picking from many options
- Ability to make custom menus like the character selection one
A proc to prompt the user to type in a number(added in v10)- A more easily customizable inventory display
Size limits on parties(added in v10)Size limit on the number quests you can haveComing in v11A mob selection menu (ex: player.mob_prompt(list_of_mobs))Coming in v11- A better party menu with options to leave the party or boot members
A way to make mobs assist players (ex: pets, summoned monsters, etc.)Coming in v11
How You Can Help
If you'd like to help out, you can post ideas in the feature requests forum. Once we figure out how it'd work, I'll add it to the list here. Once it's done, I can cross it off the list and provide a link to it (if it's a module or demo). If you're more ambitious, you can try to tackle some of these modules or demos yourself.Even the simplest demos help out. Imagine a demo to show how you can create attacks that stun. If this was a regular BYOND demo that wasn't specifically for the framework, it'd be useless. It'd be very limited and it wouldn't work with most games - it'd be highly dependent on how the rest of the game works. If you make it as a demo for the Action RPG Framework, it'll be more complete (it'll automatically show an on-screen indication of the stun as a condition) and it'll work with any game that's made using the framework.
EDIT: A new library called Mailbox++ is also in the works, allowing for a mail system within your games. Will will be a wonderful if not necessary addition to use alongside my Auctioneer++ library.