Post by Mink on Jun 5, 2013 23:10:16 GMT
I've always wanted to improve the single-player campaign system, but unfortunately, I lack the programming knowledge to do it myself (though I can make a script start somewhere besides the beginning). So, I've got all these wonderful ideas that I can't bring to life. But I think you guys might be able to do it! I'll be using Halfblood as a dummy for some parts XD
So first, there should be a folder for campaign scripts--it's far too cluttered where it is right now (in the main folder). This folder would have more folders within it for each campaign script. The folders would be named after its corresponding script (for example, the folder for Halfblood (halfblood.campaign) would be called "halfblood"). Conflicts with other campaigns for NPC scripts (such as natsume.campaign from Halfblood) could be solved by only including scripts in the main folder unless a script calls for it.
Second, to prevent problems with the updater deleting the campaigns.cfg, the game will automatically detect campaigns in the main campaigns folder. It will determine the name of the story/script by this new line that goes under [initialize]:
If the line is absent, it will be named after the campaign's filename (without the ".campaign" part, of course).
Third: Saving. This will record all the stuff for the player--location, health, progress, skills, items, pets, and locations of any NPCs and what they are doing. I can think of four saving techniques that could be used:
In all cases except no saving, this line would be added under its own event at various points to show when it restarts from if you continue (either after dying or quitting):
This would be placed before cutscenes, before and after stages/levels, any point where the player enters a new area/map, and after boss fights. If you die, you return to one of these when you click "continue"; you would also have an option to save when quitting if using manual saving. You would start again from the last save point in no saving if you click continue, but not if you quit.
In point saving, it would stop the game, open a dialogue box, and ask if you would like to save; for appearance reasons only, I'd recommend fading out in the savepoint event and fading in again at the next event unless it is placed after a cutscene (as would be the case in Forsaken World, a campaign I love which has objectives at the end of the cutscenes--a great place to put a savepoint, and fading then would just look weird).
Fourth, more variety with the spawn enemies. Shadow lions are fine in Halfblood, but what if I'm making a campaign of, say, Fractured Mirror (a Sonic story that I've been meaning to script)? The shadow lions do sorta resemble the prelates from Fractured Mirror, but they lack the variety and the bright markings. I'm thinking that maybe under [initialize], there should be this line:
(without this, the spawns are default shadow lions)
Then, there would be file called "prelates.cfg", which would look something like this:
etc.
The names determine what it's called. Each thing would be selected randomly; if there is an item list, the spawn will always have at least one of the items, but can have all of them (or a limit of 5). If attack coding like that used in the cd1.dat file is used, it will attack in that pattern. Also, if "body" is, say, "prelate1.mesh", it'll do a "mesh avatar", so you don't need to add in head/tail/etc. You could also do this with body2.mesh and get a headless lion.
Fifth: Single-player inventory and prey/pets. Just for fun, all you need to do is make prey work right in single-player and add a working inventory/stash.
Sixth one is for all those awesome mesh avatars. This will prevent crashes caused by missing animations by having there be the mesh avatar and nothing else. Just put this when creating a player or NPC:
It would then use that mesh and the material that follows without any extra parts. Just don't name one of the bodies "MESH_AVATAR(something.mesh).mesh", or there will be crashes!
Seventh, uhh...I forgot. I shouldn't be throwing any more ideas at you guys anyway, or you'll be too burned out to do any more stuff after this.
Anybody like these ideas?
So first, there should be a folder for campaign scripts--it's far too cluttered where it is right now (in the main folder). This folder would have more folders within it for each campaign script. The folders would be named after its corresponding script (for example, the folder for Halfblood (halfblood.campaign) would be called "halfblood"). Conflicts with other campaigns for NPC scripts (such as natsume.campaign from Halfblood) could be solved by only including scripts in the main folder unless a script calls for it.
Second, to prevent problems with the updater deleting the campaigns.cfg, the game will automatically detect campaigns in the main campaigns folder. It will determine the name of the story/script by this new line that goes under [initialize]:
CampaignName=Halfblood
If the line is absent, it will be named after the campaign's filename (without the ".campaign" part, of course).
Third: Saving. This will record all the stuff for the player--location, health, progress, skills, items, pets, and locations of any NPCs and what they are doing. I can think of four saving techniques that could be used:
//No saving (if you die or quit, you start over)
SavingType=none
//Auto-saving (saves at specific points in the script)
SavingType=auto
//Manual saving (this adds a "save" option to the menu)
SavingType=manual
//Save points (asks you if you would like to save at specific points in the script)
SavingType=point
In all cases except no saving, this line would be added under its own event at various points to show when it restarts from if you continue (either after dying or quitting):
SavePoint
This would be placed before cutscenes, before and after stages/levels, any point where the player enters a new area/map, and after boss fights. If you die, you return to one of these when you click "continue"; you would also have an option to save when quitting if using manual saving. You would start again from the last save point in no saving if you click continue, but not if you quit.
In point saving, it would stop the game, open a dialogue box, and ask if you would like to save; for appearance reasons only, I'd recommend fading out in the savepoint event and fading in again at the next event unless it is placed after a cutscene (as would be the case in Forsaken World, a campaign I love which has objectives at the end of the cutscenes--a great place to put a savepoint, and fading then would just look weird).
Fourth, more variety with the spawn enemies. Shadow lions are fine in Halfblood, but what if I'm making a campaign of, say, Fractured Mirror (a Sonic story that I've been meaning to script)? The shadow lions do sorta resemble the prelates from Fractured Mirror, but they lack the variety and the bright markings. I'm thinking that maybe under [initialize], there should be this line:
SpawnType=prelates
(without this, the spawns are default shadow lions)
Then, there would be file called "prelates.cfg", which would look something like this:
[Prelate Brute]
Body=3
Head=ANY_ALLOWED
Tail=ANY_ALLOWED
Mane=none
Wings=1,2,4
SizeRange=0.25,1.5
MaterialList=Prelate1,Prelate2,Prelate3
Items=collar,necklace3,spine
Attacks=stomp,backflip,lunge
[Prelate Flyer]
Body=4
Head=11
Tail=2
Mane=3
Wings=3
SizeRange=0.5
MaterialList=Prelate4,Prelate5,Prelate6
Items=shadowshard,starshard,fangs
Attacks=backflip,wingslash,zoom
etc.
The names determine what it's called. Each thing would be selected randomly; if there is an item list, the spawn will always have at least one of the items, but can have all of them (or a limit of 5). If attack coding like that used in the cd1.dat file is used, it will attack in that pattern. Also, if "body" is, say, "prelate1.mesh", it'll do a "mesh avatar", so you don't need to add in head/tail/etc. You could also do this with body2.mesh and get a headless lion.
Fifth: Single-player inventory and prey/pets. Just for fun, all you need to do is make prey work right in single-player and add a working inventory/stash.
Sixth one is for all those awesome mesh avatars. This will prevent crashes caused by missing animations by having there be the mesh avatar and nothing else. Just put this when creating a player or NPC:
Unit_Create=PLAYER,Name,MESH_AVATAR(floof.mesh),floofMat
It would then use that mesh and the material that follows without any extra parts. Just don't name one of the bodies "MESH_AVATAR(something.mesh).mesh", or there will be crashes!
Seventh, uhh...I forgot. I shouldn't be throwing any more ideas at you guys anyway, or you'll be too burned out to do any more stuff after this.
Anybody like these ideas?