The right tools for making a FM-inspired database reliant manager game?
I've been making a simple manager game in php using sql databases, thinking I'd work my way towards a web-based multiplayer game, but came to figure that maybe it would be easier to just make an executable, normal singleplayer version instead/first.
The game's interface would be inspired by the football manager series: A quite simple version of that, but with a good, simple, organized ui making it possible to easily view ones team and resources.
It would also have to (I think) use effective databases, with a lot of reading from and writing to, as the (npc) players in the teams would develop over time based on training and other events.
I hope you now have an idea of what I'd like to make.
Which tools/languages would be the easiest/most efficient to learn/use for such a task?
Ps! The game could be called a guild manager game, where the player is to manage a PvE raiding team (like a WoW raiding guild). If I can get the basic version of the game made, I hope to later be able to add a simple graphic version of boss fights. (I just thought I'd add that info in case it may affect which tools will be recommended).
Thanks for reading.
For a game like that, I think the hardest bit is picking a tool that can render the menus and spreadsheets. Unity is bad at it. Most game engines are bad at it. I'd be tempted to make it in HTML5 because that's almost the only game in town when it comes to making a usable UI with automatic layout capability.
How you handle the database is up to you, but you can easily use Sqlite for such a task if you're familiar with relational DBs.
Thank you very much for your reply.
Is it possible to create a stand-alone, executable game using HTML5 and sqlite?
Do you have any advice on sources I should go to to start learning to use HTML5 and sqlite?
It seems strange to me, knowing that there are a lot of game-making tools out there, that there is none that offers easily customisable clickable buttons and text-layouts for making games akin to (but smaller than) football manager. If it is true, as you say, that game engines are bad at it, then I guess that at least partly explains why there are so few manager games out there. Personally, being a big fan of the genre, I would think that they would be both quite easy and attractive for novice programmers to produce.
If programming languages are bad for making FM-like UIs, then I guess that partly explains why office tools often have such terrible, unintuitive interfaces.
You can build native desktop applications with HTML5, CSS3 and JavaScript using a framework that wraps Chrome's V8 JavaScript Engine around native code. Two examples of this are GitHub's Electron Framework and NW.js. Another option that you have, if you're not worried about cross-platform distribution (this would be Windows only), is C# using WPF. WPF allows for some pretty slick looking UIs in Windows Desktop applications, and the framework was built specifically for what you're looking to do.
What you're working to create is something known as a CRUD application, while you probably won't find much help with game development resources when it comes to this type of application, you'll find a plethora of resources for CRUD apps when searching in the corporate/business application development market.
Moving onto the storage part. You have two choices for your persistent storage that are within reason. You can go the route of a single-player, stand-alone executable and store all of your data in XML files. This would allow the player to edit these XML files directly, however, if it's a single-player game I doubt you're going to be too worried if someone cheats/hacks the game to begin with.
For a multi-player game, you're going to want to design a relational database. You'll most likely want to start with either MySQL or PostgreSQL. MySQL has a very large user base, and it will be easy to find how-to guides on the Internet specifically for this database. PostgreSQL has a seemingly smaller user base, but its documentation is top-notch and I actually prefer it for various reasons over MySQL.
If you're brand new to Relational Database Theory/Design, then I'd suggest you check out Code School's Try SQL, it allows you to learn the SQL language without a specific platform getting in the way, and is a great introduction into querying and manipulating databases. Once you have the basics down, you can work to get your database up and running, and then you'll need to worry about properly designing the database. For this, I recommend the book Database Design For Mere Mortals, it's an excellent introduction into Relational Database Theory without all the dense Computer Science lingo.
NOTE: As a final note, you could use an embedded database such as SQLite, instead of going the XML option. This would provide a bit more security for your single-player applications in thwarting players from hacking the data.
What you're working to create is something known as a CRUD application
I agree with the rest of your post but this line implies that the game would be allowing the user to add and delete rows from a database, but that's not really the case. The database will pre-exist (at least in some form) and the user will mostly just be shown different views on it based on the game state. Apart from the fact that it uses a relational back-end, it won't have much in common with a typical database accessing-application at all.
I had much the same idea and ended up using WPF and SQLite. I haven't gotten too far with it but I have at least been able to programmatically build a database and populate it with at least several thousand entries with random numbers for attributes/skills ratings and start building a UI.
I think I can create something like FM (minus multiplayer and the 3d match engine) with these tools, given enough time.
As Tidalwave said SQLite won't do multiplayer, and from what I gather WPF is very limited as far as 3D game development goes. But it does have some pretty good UI tools that don't require coding (drag and drop stuff).
I would have liked to use unity to include maybe some 3D RTS sequences or a dynamic 3D map in the future, but there just isn't much documentation about using databases with it and it's not that great for building UIs in the style that we want.