Mission Editor - Feature request

A forum for the discussion and development of programs to assist working on or playing with the Vegastrike engine and data sets.
Post Reply
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Mission Editor - Feature request

Post by pheonixstorm »

Anyone have any suggestions on what kind of features you would like to see in a mission editor?
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Mission Editor - Feature request

Post by klauss »

  • Visual (or semi-visual) system file editing and object placement. Visual here means having a graphical representation of the system that makes it easier to understand what you're doing.
  • Visual (or semi-visual) universe editing. That means graphically representing systems, their relative position in the universe and the connections between them - being able to add and/or remove connections, etc...
  • Visual (or semi-visual) base layout editing. Visual here means having a rough preview of base layout and appearance, being able to define hot spots (areas where you click) by point & click, etc..
  • Visual (or semi-visual) trigger-based campaign flow editing. Visual here means being able to pick objects from a system by point and click, for instance, little or no coding (have a standard set of configurable trigger patterns), perhaps even being able to define flight paths by point & clicking waypoints, graphically designing campaign-related fixer missions, by specifying fixer graphics, dialogue, being able to roughly preview the dialog and the interaction.
  • Visual (or semi-visual) random mission designer. Random missions are like campaign missions in mission scripting, but they have to be randomly generated by a separate script, so they have limitations. The designer should be randomizable in a number of places, it may require a lot of thought.
They don't have to be integrated in a single app. The system editor could be a separate app from, say, the random mission designer, or the campaign editor.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

klauss wrote:
  • Visual (or semi-visual) system file editing and object placement. Visual here means having a graphical representation of the system that makes it easier to understand what you're doing.
Not sure if I catch your meaning... are you talking about a system map or something different?
klauss wrote:
  • Visual (or semi-visual) universe editing. That means graphically representing systems, their relative position in the universe and the connections between them - being able to add and/or remove connections, etc...
So a universe map kinda like the trade navigators? Or the inflight nav console?
klauss wrote:
  • Visual (or semi-visual) base layout editing. Visual here means having a rough preview of base layout and appearance, being able to define hot spots (areas where you click) by point & click, etc..
This is another i'm unclear about. Refering to the sprite files or the normal bar sprites?
klauss wrote:
  • Visual (or semi-visual) trigger-based campaign flow editing. Visual here means being able to pick objects from a system by point and click, for instance, little or no coding (have a standard set of configurable trigger patterns), perhaps even being able to define flight paths by point & clicking waypoints, graphically designing campaign-related fixer missions, by specifying fixer graphics, dialogue, being able to roughly preview the dialog and the interaction.
Most of this is a given. The main part will be entering in the info for each mission. Fixer, fixer loc, price, dialog... As far as I know the flight path is generated in-game not in the mission files. Heres the smallest fixer file I could find from Priv PPU (non-campaign)

Code: Select all

import campaign_lib
from campaign_lib import *
ebenezerspeech1={"intro":[("Ebenezer","My name is Ebenezer, I'm Commander of the local Shepperd Militia."),
							("Burrows","The local what?"),
							("Ebenezer","The Shepperd Militia. Our team aims at replacing the more and more corrupt or absent militia forces around this area which we call the 'Grey Zone'."),
							("Burrows","I don't understand a single word."),
							("Ebenezer","The 'Grey Zone' is the area around New Caledonia, known for its immense pirate activity. Both the Militia and the Confederation don't show up too often around here, so our bases are being flooded with Brilliance and our merchants are under constant attack."),
							("Burrows","I see. So you're a bunch of little boys climbing into ships and playing police."),
							("Ebenezer","Basically yes, this is our problem at the moment. We're armed badly, and we have few good pilots, not to talk of leaders. But we're going to change that, with the help of Privateers like you."),
							("Burrows","Go on."),
							("Ebenezer","I need you for a little training flight with one of our pilots. Collect him and show him how a real ace deals with the enemy in an outnumbered situation. You and your Talon wingman are going to attack 3 pirate Talons. I'll pay 5000 for this little lesson.")],
				"reject1":[("Burrows","I'm no teacher. Forget it."),
							("Ebenezer","Well, I'll find someone else.")],
				"reconsider":[("Burrows","I've reconsidered."),
							("Ebenezer","Okay then. For 5000, show your wingman how to wipe out 3 pirate Talons.")],
				"reject2":[("Burrows","Nah.")],
				"accept":[("Burrows","Just make sure that my student won't forget his sandwich, I'll take care of the rest."),
                            ("Ebenezer","I'll also give him a bottle of milk if that suits you.")],
                "accept2":[("Ebenezer","Good.")],
				"reminder":[("Ebenezer","What's the delay?"),
							("Burrows","I'm still planning my lesson."),
							("Ebenezer","Your wingman is already in space. I don't want to see him vaporized, man."),
							("Burrows","Don't worry.")],
				"failure":[("Ebenezer","Well, I didn't hire you for observing an execution. We need every ship we can get... except of yours.")]
				}
ebenezerspeech2={"intro":[("Burrows","Okay, let's hope your pilot is smarter now."),
							("Ebenezer","That was quite a good show. Interested in participating in more missions, Mr..."),
							("Burrows","Burrows. Grayson Burrows. Probably, but not as a teacher."),
							("Ebenezer","That'd be a waste of your skills, Mr. Burrows. We're awaiting a freighter with weapon parts. We're going to construct a new kind of gun."),
							("Burrows","What kind of gun are you talking about?"),
							("Ebenezer","Since our pilots are not exactly aces, we need a gun with a low fire delay so they have a better chance to hit. The Turbo Laser should suit our needs."),
							("Burrows","Okay then, you want me to bring this freighter in?"),
							("Ebenezer","Yes. I'll pay 10000 credits. Be aware that the pirates will most likely try to prevent this. You'll get two Talon wingmen.")],
				"reject1":[("Burrows","I don't know what's frightening me more - the pirates or your wingmen.")],
				"reconsider":[("Burrows","Maybe we can come to an agreement."),
							("Ebenezer","That's nice - for 10000, bring in my freighter. You'll get two Talon wingmen, if you like it or not.")],
				"reject2":[("Burrows","No chance.")],
				"accept":[("Burrows","I'll do it.")],
                "accept2":[("Ebenezer","Good.")],
				"reminder":[("Ebenezer","The freighter is already in the system."),
							("Burrows","Yeah, I thought I'd check for pirate activity by looking through this large window..."),
							("Ebenezer","Don't try to fool me. Move out or I'll arrest you.")],
				"failure":[("Ebenezer","The freighter is lost. Our business ends here.")]
				}
ebenezerspeech3={"intro":[("UNLOCKED: Turbo Laser."),
							("Burrows","Your freighter is in, and the pirate force is wiped out."),
							("Ebenezer","Very nice. I now have a delicate mission for you. The Confederation has learnt about our efforts to build up a new militia."),
							("Burrows","Yeah, what's wrong with that?"),
							("Ebenezer","We don't have the congress permission to do so - so we got the status of a paramilitary organization. A Broadsword has entered New Caledonia, most likely for negotiations. Meet it and escort it in."),
							("Burrows","What's the wages?"),
							("Ebenezer","5000.")],
				"reject1":[("Burrows","Playing Babysitter for the feds? Why not force me to enlist?"),
							("Ebenezer","C'mon, that's easy money.")],
				"reconsider":[("Burrows","Again, what do you want me to do?"),
							("Ebenezer","For 5000, escort in a confed Broadsword.")],
				"reject2":[("Burrows","Forget it.")],
				"accept":[("Burrows","Okay.")],
                "accept2":[("Burrows","Okay.")],
				"reminder":[("Ebenezer","Move out and escort that Broadsword.")],
				"failure":[("Ebenezer","What did you do out there? Where's the Broadsword? You've let the meeting pass by! You're fired!")]
				}
ebenezerspeech4={"intro":[("Burrows","We need to talk."),
							("Ebenezer","Sure, later... where's the crew of that Broadsword."),
							("Burrows","They're dead."),
							("Ebenezer","DEAD?"),
							("Burrows","Yes. They weren't here to negotiate. They were here to arrest you. I've managed to prevent this."),
							("Ebenezer","Oh my god... we killed a confed ship. I'm going to court for this."),
							("Burrows","Well, let's fly to Perry and apologize then."),
							("Ebenezer","To PERRY? Are you crazy? They'd put me into jail right away! No, let me think... I have a friend on Macabee who could deliver the message for me. He's neutral. No risk for me, no risk for you."),
							("Burrows","Fine for me."),
							("Ebenezer","Okay then... here's the message pad. I'll pay 10000 credits for its instant delivery to Macabee in Nexus. My friend is informed, he'll be collecting it on the landing pad.")],
				"reject1":[("Burrows","10000?... I know you can pay more, in this bad situation of yours.")],
				"reconsider":[("Burrows","Say, 15000?"),
							("Ebenezer","It's 10000 for we're both in this trouble. Bring the pad to Macabee.")],
				"reject2":[("Burrows","No.")],
				"accept":[("Burrows","I'm on my way."),
                            ("Ebenezer","Hurry up.")],
                "accept2":[("Ebenezer","Thank you. Make haste!")],
				"reminder":[("Ebenezer","Back already?"),
							("Burrows","I haven't left yet, actually."),
							("Ebenezer","Man, the feds will send reinforcements. Move your ass!")],
				"failure":[("Ebenezer","A confederate transport has docked at Edinburgh. I'll be arrested in a few minutes. Thanks to your incompetency.")]
				}
ebenezerspeech5={"intro":[("Burrows","Okay, I delivered the message to Macabee. No thanks to the confed ambush."),
							("Ebenezer","Thanks. My friend already clarified that little misunderstanding. Obviously the Broadsword pilot wasn't sane enough to obey his orders."),
							("Burrows","So everything's fine now?"),
							("Ebenezer","Yes. The Confederation accepted the implementation of the Shepperd faction."),
							("Burrows","Good. Any more missions?"),
							("Ebenezer","Yes. I've hired additional Privateers for the education of our pilots, but I have a final mission for you. We're going to introduce a new fighter, the Sparrowhawk."),
							("Burrows","That's the successor of the Talon, isn't it?"),
							("Ebenezer","It is. We've sent out all of our forces to mess around with the pirates. They're currently attacking an empty Drayman, escorted by our forces. You're to escort the real freighter."),
							("Burrows","So no wingmen for me."),
							("Ebenezer","But also no opposition to expect. I'll pay 50000 for escorting my Drayman CVL safely in.")],
				"reject1":[("Burrows","You wouldn't pay that much if there wasn't a high risk. I'm not stupid.")],
				"reconsider":[("Burrows","Please tell me about the mission again."),
							("Ebenezer","For 50000, escort a Drayman CVL in.")],
				"reject2":[("Burrows","No. The not obvious hazards are usually the most hazardous hazards.")],
				"accept":[("Burrows","Nice money. Of course I'll do it."),
							("Ebenezer","Excellent. Move out.")],
                "accept2":[("Ebenezer","No risk, no fun.")],
				"reminder":[("Ebenezer","I'm not sure how long the pirates will swallow the pill. They might as well turn around and head back to New Caledonia. Better move out now.")],
				"failure":[("Ebenezer","That freighter was of great importance to us. Most of our funds were invested in those new ships. Thanks to you, the Shepperds no longer exist.")]
				}
ebenezersuccess=[("UNLOCKED: Sparrowhawk."),
			("Burrows","Your freighter has docked. I was ambushed by ships of kilrathi origin, piloted by retros."),
			("Ebenezer","That was most likely coincidence, but the Confederation might be interested to learn about a possible cooperation between Retros and Kilrathis, so I sent them a message. Well now, million thanks! I've made sure that you can also grab one of those Sparrowhawks, if you like!"),
			("Burrows","Thanks. Good luck with the Shepperds. I hope you can stabilize the Grey Zone now. Goodbye.")]

def LoadEbenezerCampaign():
	EBENEZER_SPRITE  = ("informant.spr","Talk_to_Ebenezer","bases/heads/dilloh.spr") #sprite file for the fixer
	ebenezermission1 = CampaignClickNode() # Initialize each node
	ebenezermission2 = CampaignClickNode() # Initialize each node
	ebenezermission3 = CampaignClickNode() # Initialize each node
	ebenezermission4 = CampaignClickNode() # Initialize each node
	ebenezermission5 = CampaignClickNode() # Initialize each node
	ebenezerfinish = CampaignNode()

	priv=Campaign("ebenezer_campaign") # Name of the save game variable for the entire campaign. Can't contain spaces
	priv.Init(ebenezermission1) # the first node.
	
	MakeMission(priv,
		EBENEZER_SPRITE,
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		ClearFactionRecord('militia',1.0,PushRelation('militia')),
		LaunchWingmen("militia__","talon",1),
		'defend',('pirates_',0,1,5000,123456.789,0,False,True,'merchant__',(),priv.name+"_mission",'','talon','',3), # Mission arguments.
		priv.name+"_mission",
		ebenezerspeech1,
		None,
		CampaignEndNode(priv),
		ebenezermission2,
		ebenezermission1)
	MakeMission(priv,
		EBENEZER_SPRITE,
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		AddCredits(5000), 
		LaunchWingmen("militia__","talon",2),
		'escort_local',('pirates_',0,6,1,3000,0,True,'merchant__',(),priv.name+"_mission",'','talon.blank','','drayman'), # Mission arguments.
		priv.name+"_mission",
		ebenezerspeech2,
		None,
		CampaignEndNode(priv),
		ebenezermission3,
		ebenezermission2)
	MakeMission(priv,
		EBENEZER_SPRITE,
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		AddCredits(10000,AddTechnology("turbolas")), 
		None,
		'bounty_leader',(0,0,0,False,0,'merchant_',(),priv.name+"_mission",'','broadsword',False,'',["You won't prevent us from arresting Ebenezer! Die!"]), # Mission arguments.
		priv.name+"_mission",
		ebenezerspeech3,
		None,
		CampaignEndNode(priv),
		ebenezermission4,
		ebenezermission3)
	MakeCargoMission(priv,
		EBENEZER_SPRITE,
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		[InSystemCondition("Gemini/Nexus","Macabee")],
		AddCredits(5000),
		LoadMission("ambush","ambush",(priv.name+"_mission",("Gemini/Nexus",),0,'confed_',4,'','',[("All shepperd affiliates are hereby sentenced to death!")],['Gemini/Crab-12', 'Gemini/Capella', 'Gemini/Nexus'], 'Macabee')),
		("Message",1),
		priv.name+"_mission",
		ebenezerspeech4,
		None,
		CampaignEndNode(priv),
		ebenezermission5,
		ebenezermission4)
	MakeMission(priv,
		EBENEZER_SPRITE,
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
		AddCredits(10000),
		None,
		'escort_local',('retro_',0,5,1,3000,0,True,'merchant__',(),priv.name+"_mission",'','krant','','draymanCVL'), # Mission arguments.
		priv.name+"_mission",
		ebenezerspeech5,
		None,
		CampaignEndNode(priv),
		ebenezerfinish,
		ebenezermission5)
	ebenezerfinish.Init(priv,
		[],
		None,
		None,
		GoToSubnode(0),
		None,
		[CampaignClickNode().Init(priv,
			[InSystemCondition("Gemini/New_Caledonia","Edinburgh")],
			ebenezersuccess,
			EBENEZER_SPRITE,
			TrueSubnode(AddCredits(50000,AddTechnology("sparrow"))),
			None,
			[CampaignEndNode(priv)])])
	return priv
Thats all the information I have to have the app create. This will be for campaign and non campaign scripts. As it stands now the main campaigns.py holds ALL campaign fixers but that will be edited out in favor of individual files for each fixer (see Unified Mission Resource that you posted in)
klauss wrote:
  • Visual (or semi-visual) random mission designer. Random missions are like campaign missions in mission scripting, but they have to be randomly generated by a separate script, so they have limitations. The designer should be randomizable in a number of places, it may require a lot of thought.
Are these missions from the comp terminal of from a fixer? If anything random comp terminal missions are already handled though I guess you could include creation of NEW random missions to replace or add on to those already generated by the game. I know in PPU the random missions get stale after awhile.. cargo, defend, recon, ambush... blockade runner might work.. though would work best with planetary flight.. same with some smuggling missions.
klauss wrote:They don't have to be integrated in a single app. The system editor could be a separate app from, say, the random mission designer, or the campaign editor.
Yeah, sounds like a full editor based on this could easily become an editor SUITE. That doesn't include the DB Editor for the CSV files either :lol:
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Re: Mission Editor - Feature request

Post by chuck_starchaser »

Sorry; I wasn't paying much attention to other forums besides developers'.
Yeah, a mission scripting tool needs to NOT be limited to present engine capabilities; otherwise it will add its weight to the inertia of this project. So, forget about the engine; think ideally; perfectionistically, and come up with the best mission editor in the frigging universe.
What would YOU like to see, in terms of missions?
I'd wear off my fingerprints and run out of pixels before I'd be done. First of all, missions should not be limited to things you do flying; you could get a mission to get info from someone sitting at a bar, at a different table. You could get a mission to work as turret gunner aboard a capital ship.
But as flying missions go...
Missions with branches and choices, as opposed to success or failure.
Missions where your choices can spawn on the spot a new mission (you were supposed to save a confed, but took off and went to save a damsel in distress, instead, who happens to be the daughter of the local governor, who has just been kidnapped, and she was looking for help, and so you escort her to a nearby system where her dad disappeared, and the pirates who captured his ship, you find out, are in cahoots with certain corrupt confeds, including the guy you were supposed to defend at the beginning of your mission, etceteras).
Exploration missions, where you fly to somewhere in between two asteroid fields, as this pirate told you to do, and repeatedly hit J until it works, and you jump to a hidden (off the charts) system; or you buy equipment for jump point detection and location, and explore along the fronteer, and use expensive exploration equipment to log the characteristics of planets, moons and asteroids, before considering staking a claim.
Finding a secret base mission: When our asteroid fields grow to being very vast, you could get a mission to fly around the asteroids and try to discover a secret pirate base, probably disguised as an asteroid.
News photographer mission: Become a Paparazzi by gaining more and more notoriety for your picture taking. Chase the stars. Follow famous people around. Catch pirates on the act. Unveil the next secret military fighter model noone has seen. Or the ultimate papparazi act: Take close-up pictures of a secret enemy fleet preparing for an attack, which not even the military intelligentzia knew about.
Meet a special character mission, someone who will "join your quest" and become your wing(wo)man for some time.
Board and capture ship mission.
Board a derelict ship, fix it, and fly it back.
Blockade running mission (fly stealth, fly fast, use spec creatively).
Diplomatic negotiation mission.
Combo missions --any of the above, any number of them, strung like beads in a collar.
Combo missions squared --multiple missions with choices leading to each other in loops or complex figures, like a state machine.
Controllable and/or random interrupts, where possible other misions interrupting your mission via an email or radio distress call can be enabled, disabled, or controlled in type and probability.
Flightgroup missions:
Either as a member of a flight group, obeying orders; or as wing leader.
Convoy missions, as member cargo ship owner, or as defense escort pilot, or as wing-leader for the escorts, or as convoy leader.
Military missions:
Reckon. Reckon in force. Distracting enemy defenses while fleet prepares to attack from hidden postition. Distract enemy interceptors while your fighters decimate them. Defend bombers on a torpedo run. Fly a bomber on a torpedo run. Fly a personnel carrier into an enemy capital ship, for boarding it. Or be one of the boarding swat team members. Fly a destroyer, defending a carrier from approaching bombers or torpedo corvettes. Fly a torpedo corvette. Lead a fleet, as carrier admiral, and make tactical and strategic plans. Take part in a military exercise, with dummy munitions. Practice a mission on a simulator before you fly it for real.
Space to ground missions: Fly down the atmo of a planet and attack ground defenses to clear an area for a landing by marines.
Ground to space missions: Planetary defense.
Courier missions. Taxi missions. Humanitarian missions.
Enough for now. :)
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

chuck_starchaser wrote:Sorry; I wasn't paying much attention to other forums besides developers'.
Yeah, a mission scripting tool needs to NOT be limited to present engine capabilities; otherwise it will add its weight to the inertia of this project. So, forget about the engine; think ideally; perfectionistically, and come up with the best mission editor in the frigging universe.
What would YOU like to see, in terms of missions?
Ideally.. I'd like to see the whole missions system is VS rebuilt since parts of it are kinda buggy.
I'd wear off my fingerprints and run out of pixels before I'd be done. First of all, missions should not be limited to things you do flying; you could get a mission to get info from someone sitting at a bar, at a different table.
Is that possible? I know i've seen two fixers at the starting planet in VS before.. but not sure if you can do that at present
You could get a mission to work as turret gunner aboard a capital ship.
Is that possible?
But as flying missions go...
Missions with branches and choices, as opposed to success or failure.
Missions where your choices can spawn on the spot a new mission (you were supposed to save a confed, but took off and went to save a damsel in distress, instead, who happens to be the daughter of the local governor, who has just been kidnapped, and she was looking for help, and so you escort her to a nearby system where her dad disappeared, and the pirates who captured his ship, you find out, are in cahoots with certain corrupt confeds, including the guy you were supposed to defend at the beginning of your mission, etceteras).
It might be possible... though not sure if its doable, at least not with the current python files. I really don't know python but I could probably do it with a c-like scripting language. I did a lot of scripting work on warzone and neverwinter nights, both used a c-like scripting language.
Exploration missions, where you fly to somewhere in between two asteroid fields, as this pirate told you to do, and repeatedly hit J until it works, and you jump to a hidden (off the charts) system; or you buy equipment for jump point detection and location, and explore along the fronteer, and use expensive exploration equipment to log the characteristics of planets, moons and asteroids, before considering staking a claim.
This sounds like it would be a lot easier to work on the way things currently stand.
Finding a secret base mission: When our asteroid fields grow to being very vast, you could get a mission to fly around the asteroids and try to discover a secret pirate base, probably disguised as an asteroid.
This wouldn't be hard to do I think, most nav point patrol missions in PPU are kinda like this already
News photographer mission: Become a Paparazzi by gaining more and more notoriety for your picture taking. Chase the stars. Follow famous people around. Catch pirates on the act. Unveil the next secret military fighter model noone has seen. Or the ultimate papparazi act: Take close-up pictures of a secret enemy fleet preparing for an attack, which not even the military intelligentzia knew about.
This... well this borders on the fruity side to me. Up until the secret enemy fleet.. and that would fall under recon.
Meet a special character mission, someone who will "join your quest" and become your wing(wo)man for some time.
This could be done. We already add wingmen in some current missions anyway. How hard to make it more long term and keep the player from loosing a mission slot is up in the air.
Board and capture ship mission.
Can be done, though not very realistic for some ships w/o the right dialog. Along this line you could also add sabotage.
Board a derelict ship, fix it, and fly it back.
Dock with the ship and what... how would you actually FIX the ship w/o the repair screen.. load up spare parts?? But then how would you load up spare parts and have the RIGHT spare parts...
Blockade running mission (fly stealth, fly fast, use spec creatively).
Can be done
Diplomatic negotiation mission.
Can be done
Combo missions --any of the above, any number of them, strung like beads in a collar.
Mini campaigns more or less, can probably be done
Combo missions squared --multiple missions with choices leading to each other in loops or complex figures, like a state machine.
This sounds like a non-linear campaign
Controllable and/or random interrupts, where possible other misions interrupting your mission via an email or radio distress call can be enabled, disabled, or controlled in type and probability.
Tricky... can probably be done but need someone with knowledge of python.
Flightgroup missions:
Either as a member of a flight group, obeying orders; or as wing leader.
Convoy missions, as member cargo ship owner, or as defense escort pilot, or as wing-leader for the escorts, or as convoy leader.
Can already be done
Military missions:
Reckon. Reckon in force. Distracting enemy defenses while fleet prepares to attack from hidden postition. Distract enemy interceptors while your fighters decimate them. Defend bombers on a torpedo run. Fly a bomber on a torpedo run. Fly a personnel carrier into an enemy capital ship, for boarding it. Or be one of the boarding swat team members. Fly a destroyer, defending a carrier from approaching bombers or torpedo corvettes. Fly a torpedo corvette. Lead a fleet, as carrier admiral, and make tactical and strategic plans. Take part in a military exercise, with dummy munitions. Practice a mission on a simulator before you fly it for real.
Space to ground missions: Fly down the atmo of a planet and attack ground defenses to clear an area for a landing by marines.
Lead a fleet.. play homeworld, or moo3.
Ground to space missions: Planetary defense.
Give me planetary flight or seamless planetary flight. For planetary flight just yank some flightgear source and find a transition between the ground and space :lol:
Courier missions. Taxi missions. Humanitarian missions.
Can be done
Enough for now. :)
Oh is that all?? :P

Ok, if I came up with the perfect mission editor it would NOT use python. It would use a c-like language. And it also would NOT be possible w/o an engine that used the output anyway. I'm stuck writing an editor that is based on the needs and uses of the current vs engine (current and as it changes). It could be possible to create an editor to meet the needs of everything but then I would have to write for lua, python, tcl (i think), maybe ruby, c-like scripts, and anything else designed and run within a given game engine... not something anyone would want to do. 3d modeling is engine independent, scripting is engine dependent. Given enough time reading all the mission py files I can probably change a lot of it, but some ideas would require changes in the engine as well.

There are a lot of good ideas up there, but how many can be done w/o making any changing to the engine code? Over half probably.. Nice list though, keep the ideas flowing chuck, just try to make it a tiny bit more readable though please ;)
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
charlieg
Elite Mercenary
Elite Mercenary
Posts: 1329
Joined: Thu Mar 27, 2003 11:51 pm
Location: Manchester, UK
Contact:

Re: Mission Editor - Feature request

Post by charlieg »

Um... you can write independent Python apps (or lua or whatever). Most of these scripting languages come with their own independent runtimes that are installed in most Linux distros and easily installable in Windows.
Free Gamer - free software games compendium and commentary!
FreeGameDev forum - open source game development community
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Mission Editor - Feature request

Post by klauss »

Just one thing: most everything chuck proposed is actually possible.

Campaign scripts are python scripts, current classes only have a limited set of capabilities, which result in the current campaign. But the core scripting system I believe is flexible enough to implement everything chuck said over time.

So do please design your editor with these possibilities in mind, and supporting python scripts can be coded as needed to handle those types of missions. Particularly interesting from a campaign standpoint are the missions where you have to look for a guy and talk to him - in a base. It's rather simple (just put the guy as a fixer in the right system and script the mission so that it's finished when you talk to him).

About waypoints, right now everything's random. That's a problem. Most campaigns need detailed scripting of flightpaths, mostly to make things convincing. Police (confed) forces should patrol the system in predictable paths, and not only direct routes between bases, but also indirect routes frequently used by pirates. All that needs not be coded in the AI, it can be scripted with waypoints.

Random missions are the same: they're created randomly by a python script, so in order to create a "random mission designer" a very flexible and configurable set of mission types should be created (notice though that there's already quite a few of those), and the corresponding lists and functions in random_mission.py (AFAIK) modified to include those classes.

Well, actually, I'd like for all the .py files (including the campaign files when possible) to not need any kind of editing for this kind of stuff. They could read their lists and data from xml files - I know people here had a bad brush with xml, but xml has the benefit of being supported by mostly everything, and though it's verbose and inefficient, it's efficient enough and robust enough for campaign data. I wouldn't put mesh data in XML - but I'd certainly put campaign data. Python has XML parsing libraries, and they're very easy to use. Or if XML isn't so hot, any other kind of data file - but not everything in .py files. People get stumped when they have to edit things surrounded by python code - even if they're mere string lists, the first thing they think is that they have to write a program and bail out. I've seen it with every contributor's attempt at writing a campaign for VS.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Re: Mission Editor - Feature request

Post by chuck_starchaser »

@storm: As Klauss says, never mind whether it is possible right now. Don't ask "is this possible?" It matters not.
As I said at the beginning of my post, if you limit the mission editor to what's possible right now, it will make what's NOT possible now all the less possible in the future. You don't want to do that. Lead the way for the engine, rather than follow it.
Make your app comprehensive and UN-encumbered by vs's current limitations.
Make your app compile mission scripts/xml data in the clearest way you can think of.
Then we can hack vs to read YOUR format.
IOW, forget vegastrike.
Write your app as if it were a universal mission editor for any and all games, compiling to
an UMSL (Universal Mission Specification Language). ;-)
charlieg
Elite Mercenary
Elite Mercenary
Posts: 1329
Joined: Thu Mar 27, 2003 11:51 pm
Location: Manchester, UK
Contact:

Re: Mission Editor - Feature request

Post by charlieg »

But then he'll write it to output SQL... :twisted:
Free Gamer - free software games compendium and commentary!
FreeGameDev forum - open source game development community
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

charlieg wrote:But then he'll write it to output SQL... :twisted:
No, it will output pure C and you will like it! Nay, you will love it! And all shall bow down before the greatness of it. :twisted:

All kidding aside, time to reread the last two serious posts and make my replies.

*EDIT make that 3, forgot the tiny post by charlieg
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

charlieg wrote:Um... you can write independent Python apps (or lua or whatever). Most of these scripting languages come with their own independent runtimes that are installed in most Linux distros and easily installable in Windows.
Yeah... Eve uses python while simcity4, wow, and various others use lua...

So, who has used either and who thinks one or the other would work better for missions and possibly AI?
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Re: Mission Editor - Feature request

Post by chuck_starchaser »

For the AI I'd use Assembler, fully hand-optimized XMM, never mind a scripting language.
Mission scripting (game-flow and logic), that's definitely made for a scripting language.
But I know none of them, so I have no opinion on which is best.
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

klauss wrote:Just one thing: most everything chuck proposed is actually possible.
Gimme time to sort out the mission script interactions
Campaign scripts are python scripts, current classes only have a limited set of capabilities, which result in the current campaign. But the core scripting system I believe is flexible enough to implement everything chuck said over time.
The more I dev into the darkness the more I shall find the light. In other words.. If its possible it'll be in there
So do please design your editor with these possibilities in mind, and supporting python scripts can be coded as needed to handle those types of missions. Particularly interesting from a campaign standpoint are the missions where you have to look for a guy and talk to him - in a base. It's rather simple (just put the guy as a fixer in the right system and script the mission so that it's finished when you talk to him).
I think for the first release it will only handle the current fixer format used by VS and PPU (as proposed in my thread in dev focus) and spit out the py files as /campaign/fixer.py or /addin/fixer.py usb fixer for actual name. That way we will have something to work with until I can get some more serious work done on this plus it gives me a chance to learn a little about the current layout and what I want to fix replace or just hack apart.
About waypoints, right now everything's random. That's a problem. Most campaigns need detailed scripting of flightpaths, mostly to make things convincing. Police (confed) forces should patrol the system in predictable paths, and not only direct routes between bases, but also indirect routes frequently used by pirates. All that needs not be coded in the AI, it can be scripted with waypoints.
In system nav points or those used by missions to fly from one system to another?
Random missions are the same: they're created randomly by a python script, so in order to create a "random mission designer" a very flexible and configurable set of mission types should be created (notice though that there's already quite a few of those), and the corresponding lists and functions in random_mission.py (AFAIK) modified to include those classes.
This could be changed later probably or at least tweaked for now. Seems to run ok for the most part.
Well, actually, I'd like for all the .py files (including the campaign files when possible) to not need any kind of editing for this kind of stuff. They could read their lists and data from xml files - I know people here had a bad brush with xml, but xml has the benefit of being supported by mostly everything, and though it's verbose and inefficient, it's efficient enough and robust enough for campaign data. I wouldn't put mesh data in XML - but I'd certainly put campaign data. Python has XML parsing libraries, and they're very easy to use. Or if XML isn't so hot, any other kind of data file - but not everything in .py files. People get stumped when they have to edit things surrounded by python code - even if they're mere string lists, the first thing they think is that they have to write a program and bail out. I've seen it with every contributor's attempt at writing a campaign for VS.
Writing parts of the campaign don't seem too difficult depending on the section... though adding a new layer to this doesn't seem like a good idea. And generally speaking script generators normally aren't the best for creating the code anyway. For game scripting you either learn the code or use an editor.. and just hope you don't STILL have to learn the code to use the editor.
chuck_starchaser wrote:@storm: As Klauss says, never mind whether it is possible right now. Don't ask "is this possible?" It matters not.
As I said at the beginning of my post, if you limit the mission editor to what's possible right now, it will make what's NOT possible now all the less possible in the future. You don't want to do that. Lead the way for the engine, rather than follow it.
Make your app comprehensive and UN-encumbered by vs's current limitations.
Make your app compile mission scripts/xml data in the clearest way you can think of.
Then we can hack vs to read YOUR format.
IOW, forget vegastrike.
Write your app as if it were a universal mission editor for any and all games, compiling to
an UMSL (Universal Mission Specification Language).
[/quote]

Aww gee you would rewrite the code for me?? :lol: As I stated for klauss above.. the first release will conform to the current code.. though gladly with future releases I will bend VS to my will. We have good ideas, now we just need to see what is already there and what will need to be added, altered, fixed, or optimized.

Along this line of thought though.. how hard would it be to create our own sripting language based off C or at the most use the language (slightly altered to fit our needs) used in Warzone2100? Its a c-like scripting language that could very easily be used to define multiple AI states as well as define the missions.
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Re: Mission Editor - Feature request

Post by chuck_starchaser »

pheonixstorm wrote:
chuck_starchaser wrote:@storm: As Klauss says, never mind whether it is possible right now. Don't ask "is this possible?" It matters not.
As I said at the beginning of my post, if you limit the mission editor to what's possible right now, it will make what's NOT possible now all the less possible in the future. You don't want to do that. Lead the way for the engine, rather than follow it.
Make your app comprehensive and UN-encumbered by vs's current limitations.
Make your app compile mission scripts/xml data in the clearest way you can think of.
Then we can hack vs to read YOUR format.
IOW, forget vegastrike.
Write your app as if it were a universal mission editor for any and all games, compiling to
an UMSL (Universal Mission Specification Language).
Aww gee you would rewrite the code for me?? :lol: As I stated for klauss above.. the first release will conform to the current code.. though gladly with future releases I will bend VS to my will. We have good ideas, now we just need to see what is already there and what will need to be added, altered, fixed, or optimized.
The code needs a rewrite no matter; so might as well.
And I would NOT, even for a first version, try to conform to the current code. Those python mission functions are a nightmare of a gazillion parameters that someone reading a function call has no way to know what all the magical numbers in the arguments represent. That's NOT how it should be. There should be a file where you write,
num_enemy_fighters = 7
num_pimples_on_leaders_face = 42
etceteras; and then you pass this data block to a function. Or something along the lines. This is something you need to think about, by the way: What's the clearest way of writing missions so that they are easy to write AND easy to read.
Along this line of thought though.. how hard would it be to create our own sripting language based off C or at the most use the language (slightly altered to fit our needs) used in Warzone2100? Its a c-like scripting language that could very easily be used to define multiple AI states as well as define the missions.
That's going too far, by like a (10^40)! factor.
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

chuck_starchaser wrote:That's going too far, by like a (10^40)! factor.
Yeah, but still an idea worth asking about.
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
Deus Siddis
Elite
Elite
Posts: 1363
Joined: Sat Aug 04, 2007 3:42 pm

Re: Mission Editor - Feature request

Post by Deus Siddis »

chuck_starchaser wrote: Exploration missions, where you fly to somewhere in between two asteroid fields, as this pirate told you to do, and repeatedly hit J until it works, and you jump to a hidden (off the charts) system; or you buy equipment for jump point detection and location, and explore along the fronteer, and use expensive exploration equipment to log the characteristics of planets, moons and asteroids, before considering staking a claim.
Another spin off idea is to have take and hold missions, where you either take over a hostile or set down your own station or surface colony, and must defend it until a time when reinforcements arrive or it is fortified into a well defended stronghold. You might need to do a combination of protecting it from direct attacks, delivering supplies and protecting inbound convoys that are supplying/reinforcing this place.
Board and capture ship mission.
Board a derelict ship, fix it, and fly it back.

Space to ground missions: Fly down the atmo of a planet and attack ground defenses to clear an area for a landing by marines.
Ground to space missions: Planetary defense.
For these and other mission types, it would also be nice to have support for "disembarked" missions, where you need to get out of your ship and be on foot, in a surface based assault vehicle, atmospheric vehicle, etc. to complete your mission on a planet's surface or inside a colony, station or ship.


One more idea- official military service, tours of duty. You sign up for a campaign of missions that afterwards you cannot cancel or you will suffer penalties for desertion or defection. Leaving with a next generation warship you were trusted with in the process could incur much higher penalties from that faction (being hunted down like a dog, for example).
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Mission Editor - Feature request

Post by klauss »

chuck_starchaser wrote:There should be a file where you write,
num_enemy_fighters = 7
num_pimples_on_leaders_face = 42
etceteras; and then you pass this data block to a function. Or something along the lines. This is something you need to think about, by the way: What's the clearest way of writing missions so that they are easy to write AND easy to read.
Yep, there should be such a file.
But... just know that python lets you pass arguments by keyword - ie:

Code: Select all

def func(ancho, alto, belleza, nombre):
    ...
...
func(
    nombre = "pepito",
    alto = 30,
    ancho = 20,
    belleza = 100000000000000 )
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Mission Editor - Feature request

Post by klauss »

pheonixstorm wrote:Writing parts of the campaign don't seem too difficult depending on the section... though adding a new layer to this doesn't seem like a good idea. And generally speaking script generators normally aren't the best for creating the code anyway. For game scripting you either learn the code or use an editor.. and just hope you don't STILL have to learn the code to use the editor.
Why not?
Forcing non-programmers to edit code risks introductions of hard-to-debug bugs, in code, because sometimes non-programmers don't see all ramifications.

Adding another layer is simply separating concepts that ARE indeed separate.

A bit more abstraction and work for a lot of ease for content authors. Doesn't that sound like a good idea?
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

klauss wrote:A bit more abstraction and work for a lot of ease for content authors. Doesn't that sound like a good idea?
Not really... If you do mod work you have to know SOMETHING about what you are working with. Lets look at it this way.. you can design a web site by wysiwys or by hand. By hand you get clean code even if you don't really know html/xml whatever. An app that does it for you makes very sloppy work that can itself become bugged if you try to get the tool to do something complex.

Part of this YES we can make this easy for the end user. My initial design for this was mostly about creating the missions based on a few key factors: Dialog, location, and price. My wizard design had no coding input involved and would have made things about as easy as point n click. The editor on the other hand was going to add in saving and reloading missions and getting more creative than simply read the script go here and do this. I wanted a somewhat non-linear design. Pass/Fail gives missions 2a or 2b, so if success go to 2a if fail 2b.

When I starting designing this I did not plan on having to rewrite the missions scripting first... But, if I can I will provided I CAN actually pull it off and have the time to do so.

Anyway, gotta run for a few.
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
snow_Cat
Confed Special Operative
Confed Special Operative
Posts: 349
Joined: Thu Jan 05, 2006 12:43 am
Location: /stray/
Contact:

Re: Mission Editor - Feature request

Post by snow_Cat »

This certainly would make implementing my metagame board concept easier.
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Mission Editor - Feature request

Post by pheonixstorm »

Nothing new yet.. just thought I would let everyone know my time is very limited right now since the baby was born... Still checking up though and *TRYING* to do a little work here and there...
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Mission Editor - Feature request

Post by klauss »

pheonixstorm wrote:Nothing new yet.. just thought I would let everyone know my time is very limited right now since the baby was born...
Hey! Congrats!

(and I hope you do get some sleep from time to time ;) )
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
Post Reply