All right, so basically I am helping set up an online text-based roleplaying game and the system we are using now is really tedious to update.
So I want to build a site that can automate some of the process for us.
It would need to:
- allow for registration of accounts
- each account would have a character sheet tied to it
- when registering the account/character, the site should check the inputted data to make sure it conforms with the game system (stat requirements meet the limits for a particular class, for example)
- have some sort of GM update sceen so they can add quest rewards and etc. to the character sheets
- give the player the option to level up only when their character meets the appropriate xp requirement, and then give the player the chance to boost the stats appropriately
- have a shop system. so the GMs can add items to the shops database easily, and then registered players can purchase the items
...I thiiink that's about it for the basics. There are some more advanced features I would like, but I figure if I can make what I outlined above then I should be able to figure out the other stuff.
Now. What should I be using to build this? PHP/MySQL? or is there a better way?
Posts
But the nice thing is that Drupal gives you things like content management and a user registration/login system right out of the box. It also has roles, so it's trivial to make some players GMs and give them access to things like shop editing.
It might be fun (and a bit leaner code-wise) to try building this as a Symfony2 project, actually, which I've been meaning to pick up since Drupal 8 is going to be using Symfony.
Edit: Do you have any experience programming for web already?
I'll definitely give Drupal a look. I haven't had a chance to play with it before, so it should be interesting.
Do... Re... Mi... So... Fa.... Do... Re.... Do...
Forget it...
Account Registration - available out of the box
Character Sheets - You've got a lot of options here, users are fieldable entities so you can probably do a character sheet as user fields, but if you want people to be able to have multiple characters ever, you'll probably want something more robust, like making a Character Sheet content type, but then you'll need some more advanced content permissions so people can only edit their own sheets.
Game system - this would be a custom validation function for character sheets. I'd definitely look into a module called Clientside Validation for this.
GM Update Screen - this is a big variable that depends on your game system. Again, this might require some custom access rights, so a GM can only update character sheets for their campaigns.
Level Up - this is probably the most interesting bit. Leveling up would probably be a custom form that stores data separately from the content sheet. Maybe a custom entity? You could then use a hook to modify the display of the content sheet to include the modifications. That way you'd always have full character history.
Shop System - I'd probably build shops and shop items both as content types, and each shop item would have an entity reference to the shop. Shops would be attached either to GMs or to campaigns, or maybe even be global depending on your game rules/setting/etc.
Really, if you're not familiar with Drupal, the hard part is just knowing what hooks to implement where, what can be built with the UI and what's better off as custom code, and what functionality can be obtained from existing modules. I'd be happy to answer any questions!
That said, it's not going to be plug and play. You'll need to take some time to get Drupal correctly installed, configured, and modded. You'll almost certainly need to do some template customization. This will require some PHP/CSS/HTML work, but significantly less than building a system from scratch.
There is a Drupal Way to do things, and it can be daunting for new users. But once it clicks, it really clicks, and you can do a lot of really powerful stuff with it fairly swiftly.
the "no true scotch man" fallacy.
I'll keep this updated as I progress with the project.
Do... Re... Mi... So... Fa.... Do... Re.... Do...
Forget it...