03-08-2012, 05:29 PM
This is not about Xonotic, but close enough to fit the development section. It's an idea I've been thinking about for some time, and decided to bring into debate today. It will probably be a while until I get started (likely more than an year) but I plan to make this a reality. Also, I might have previously made a topic similar to this, but since my planned approach changed a lot I guess I'll start this debate anew.
As some might know, I previously suggested support for single player features in Xonotic, to allow making games like Quake, Unreal or whatever using the Xonotic framework. Some parts of my idea would change Xonotic a lot though, and toward a direction that might not be appropriate for an arena FPS. This left me thinking for some time about what and how I should do.
A month ago, I came across a wonderful project for creating 2D RPG games called OHRRPGCE. It's an open-source tool written in Freebasic (previously Qbasic) which lets users create RPG games using nothing but a menu. Scripting is optional, and any game is created by specifying tags, NPC's that trigger other NPC's, etc. This type of development system sparked a new idea in my mind, and I plan to do something similar with Xon. Here's a screenshot from its menu to get an idea:
My plan is to create a single-player creation toolkit from Xonotic, which would allow people to create their own games without having to change and compile any code. The developer would create his maps in netRadiant, placing the appropriate entities to do so. The rest would be configured using cvars. Each game would be contained as a mod (separate data directory) which would consist of the entire game (settings + maps + assets). The engine and 'data' folder would only consist of the game code, and some default textures and models from Xonotic for people to use in their games. There would be no default maps, weapons, game types, etc. When starting xonotic.exe, the user would be presented with a menu list, in which he selects the game he wishes to load.
This might seem impossible at first, but from my experience with QC it can be done by pulling some strings in QC The hardest part would be turning all weapons into cvars, and removing all hard coded guns and attacks. For example, the cvar g_weapon_3_primary_type would have the values "hitscan single" (like the Nex), hitscan burst (like UZI alt fire), hitscan spread (shotgun), "rocket", and "grenade". Additional cvars would specify the 3D model of the projectile, if it bounces, and other settings which are hard coded in current Xonotic. This would allow the creator to make weapons as they wish, name them accordingly, and set all other properties there. All existing gametypes would be removed, and the only multiplayer types would be co-op (players play through the story together) and versus (players fight each other in the mission).
I also plan to add mechanics that Xonotic doesn't (and probably shouldn't) have. One of them is turning everything into items. In Xonotic, walking over a health pickup will immediately increase your health. In my project, you would have to stand close to the health, look it, press the 'use' key to take it, which would only put it in your inventory. You would then select it like a weapon, and press the fire button to consume it and increase your health / armor. The weapon bar would also be customizable, and the player would manually map an item they own to the 0...9 keys on the weapons bar. Overall, I plan to use an inventory system like the one in DeusEx, which looks like this:
I also plan to add skills that the player can level up, and possibly weapon upgrades as well (which would also be items). Hackable computers, a notes system (like the PDA in Doom 3), alarms that will alert enemies, the ability to pick and carry dead bodies, and other features are also on top of the list. The dynamics I have in mind for this are those of games like DeusEx, No One Lives Forever, and other RPG-FPS games which take place in urban environments.
Currently, I'm waiting for most major plans in Xonotic to be completed, and a few other features to be added, before forking a new project which I'd no longer update from Xonotic. One of them are ragdoll deaths for players, which will be a must in my game (same as ODE physical objects, but they're supposedly defaulted since the Sandbox). I also need to keep begging LordHavoc to implement Depth of Field in DarkPlaces
But to sum it up, my plan is to create a SDK from Xonotic, that will allow people to create any genre of story-based games (with RPG capabilities) without any programming. QC would only contain mechanics that can be used and emulated on any game. If this ever happens and will be easy to use and attract enough people, it might lead to the creation of several story-driven games of quality like Doom 3's... since anyone with basic knowledge will be able to make their own story, the only real requirement being to learn NetRadiant.
I'd like to hear what you think of my idea and the way I plan to implement it. If such a system were created, would you use it? Also, would you help in the development of this SDK alongside Xonotic? I know this might seem like forcing QC beyond its capabilities, but I believe it can be managed.
As some might know, I previously suggested support for single player features in Xonotic, to allow making games like Quake, Unreal or whatever using the Xonotic framework. Some parts of my idea would change Xonotic a lot though, and toward a direction that might not be appropriate for an arena FPS. This left me thinking for some time about what and how I should do.
A month ago, I came across a wonderful project for creating 2D RPG games called OHRRPGCE. It's an open-source tool written in Freebasic (previously Qbasic) which lets users create RPG games using nothing but a menu. Scripting is optional, and any game is created by specifying tags, NPC's that trigger other NPC's, etc. This type of development system sparked a new idea in my mind, and I plan to do something similar with Xon. Here's a screenshot from its menu to get an idea:
My plan is to create a single-player creation toolkit from Xonotic, which would allow people to create their own games without having to change and compile any code. The developer would create his maps in netRadiant, placing the appropriate entities to do so. The rest would be configured using cvars. Each game would be contained as a mod (separate data directory) which would consist of the entire game (settings + maps + assets). The engine and 'data' folder would only consist of the game code, and some default textures and models from Xonotic for people to use in their games. There would be no default maps, weapons, game types, etc. When starting xonotic.exe, the user would be presented with a menu list, in which he selects the game he wishes to load.
This might seem impossible at first, but from my experience with QC it can be done by pulling some strings in QC The hardest part would be turning all weapons into cvars, and removing all hard coded guns and attacks. For example, the cvar g_weapon_3_primary_type would have the values "hitscan single" (like the Nex), hitscan burst (like UZI alt fire), hitscan spread (shotgun), "rocket", and "grenade". Additional cvars would specify the 3D model of the projectile, if it bounces, and other settings which are hard coded in current Xonotic. This would allow the creator to make weapons as they wish, name them accordingly, and set all other properties there. All existing gametypes would be removed, and the only multiplayer types would be co-op (players play through the story together) and versus (players fight each other in the mission).
I also plan to add mechanics that Xonotic doesn't (and probably shouldn't) have. One of them is turning everything into items. In Xonotic, walking over a health pickup will immediately increase your health. In my project, you would have to stand close to the health, look it, press the 'use' key to take it, which would only put it in your inventory. You would then select it like a weapon, and press the fire button to consume it and increase your health / armor. The weapon bar would also be customizable, and the player would manually map an item they own to the 0...9 keys on the weapons bar. Overall, I plan to use an inventory system like the one in DeusEx, which looks like this:
I also plan to add skills that the player can level up, and possibly weapon upgrades as well (which would also be items). Hackable computers, a notes system (like the PDA in Doom 3), alarms that will alert enemies, the ability to pick and carry dead bodies, and other features are also on top of the list. The dynamics I have in mind for this are those of games like DeusEx, No One Lives Forever, and other RPG-FPS games which take place in urban environments.
Currently, I'm waiting for most major plans in Xonotic to be completed, and a few other features to be added, before forking a new project which I'd no longer update from Xonotic. One of them are ragdoll deaths for players, which will be a must in my game (same as ODE physical objects, but they're supposedly defaulted since the Sandbox). I also need to keep begging LordHavoc to implement Depth of Field in DarkPlaces
But to sum it up, my plan is to create a SDK from Xonotic, that will allow people to create any genre of story-based games (with RPG capabilities) without any programming. QC would only contain mechanics that can be used and emulated on any game. If this ever happens and will be easy to use and attract enough people, it might lead to the creation of several story-driven games of quality like Doom 3's... since anyone with basic knowledge will be able to make their own story, the only real requirement being to learn NetRadiant.
I'd like to hear what you think of my idea and the way I plan to implement it. If such a system were created, would you use it? Also, would you help in the development of this SDK alongside Xonotic? I know this might seem like forcing QC beyond its capabilities, but I believe it can be managed.