PDA

View Full Version : FMB needs to be much more User Friendly.


MB_Avro_UK
06-04-2011, 10:44 PM
I used to have no problems with the FMB in il2 1946. I created many co-ops for Squad members to enjoy.

FMB in CoD seems to be too complex. What are scripts and why should I have to do something with them just to create a spawn time different from the standard 12.00 start time?

Best Regards,
MB_Avro.

MadTommy
06-05-2011, 10:05 AM
The mission editor is very simple compared to other flight mission mission editors.

Creating a delayed spawn is also very easy, here (http://forum.1cpublishing.eu/showthread.php?t=20995) is a thread describing how this is achieved, really is very simple.

Creating new scripts is tough unless you know c#. But these are not essential or you can just use other peoples' scripts.

What is needed is some decent documentation of features and such like.. this is the one thing that pisses me off, releasing a sim with such poor documentation, after soo many years in development is just crap.

Seeker
06-05-2011, 10:18 AM
If it's that simple, why does it need a forum for it's self?

Because it's not simple.


In fact, while it IS very powerful, and some who knows it well (which to be honest, no one know's Clod's FMB well yet, 'cos it's not finished) can produce astonishing results, it bears the same relation to a worthwhile content editor for gamers to use as Notepad has to a proper CMS system.

Yes, you can write a simple home page with Notepad. Yes, you "could" write Technet with notepad. But you wouldn't, and people don't.

Simply put, the FMB interface and documentation is awful. It always was. It's just that with a total lack of content or a dynamic mission engine we feel the true and utter awfulness of the FMB more than ever.

Seeing as the game lacks so much content I really think that the FMB forum is the one place it would be worthwhile for 1C to invest in a more tangible presence, helping thier customers supply content they themselves were too lazy or short sited to make.

MadTommy
06-06-2011, 12:31 PM
If it's that simple, why does it need a forum for it's self?

Having its own forum section is no indication of its complexity/simplicity.

I had never played IL2 or looked at the FMB prior to CloD and it took me about 30 minutes to figure out everything except the custom scripting. Making simple missions is very easy. The only thing that is tricking is the scripting, as i simply do not know C#.

Simply put, the FMB interface and documentation is awful.

This i could not agree more with.

ZaltysZ
06-06-2011, 01:05 PM
Yes, you can write a simple home page with Notepad.

I earn money for living by writing complex things in "notepad". :grin: It is hard to do something complex if you have to construct it from kinda inflexible parts. Software which helps you in creation by using autogeneration will always give poor results when compared to manual work. FMB is a tool, which is very useful for map work (placing objects, waypoints and so on), but it will unlikely be developed to the stage, where you wouldn't need scripts anymore.

Rattlehead
06-06-2011, 06:37 PM
I don't find the FMB any more or less hard than the old one; there are some new features which people need to get accustomed to, that's all.

Scripting is another matter though. What is urgently needed is some scripting basics; there is some example code on the 'net, but I think the syntax of some of the code will have a lot of people stumped.

Luckily I have an experienced programmer friend who has offered to each me some C# basics when he has time, but most people will not be so fortunate.

Ataros
06-07-2011, 07:50 AM
Purchased a book called "Introduction (or basic) course to C# programming" by a university professor last Saturday. It is only about 200 pages and makes things way easier.

Below is a sample code I wrote yesterday after just 2 days of reading it. Of cause I was using 2 pieces of code from other people: ZaltysZ and naryv, but the book provided enough understanding to combine them and finetune to my needs. Just 4 weeks ago I thought C# was beyond my comprehension. Now I think the basics of it are easier than basics of the English language. Do not expect developers include such a book into documentation, just go out and buy one.

string[] activeSector = { "D3", "D4" }; // sectors attacked by ground groups
string[] side = { "хз", "Red", "Blue"}; // army side
int LastMissionLoaded = 0;
double initTime;

string currSide = " ";
string currSector = " ";

int missLoaded = 0; // debugging


public override void Init(maddox.game.ABattle battle, int missionNumber)
{
base.Init(battle, missionNumber);
MissionNumberListener = -1; //Listen to events of every mission

//Planned missions MissionLoader(int offset, int repeat, string mission)
MissionLoader(90, -1, "missions/Multi/Dogfight/BoF1/sub/0_1_gg.mis"); // 10s from main mission start and no repeate every -s
MissionLoader(900, -1, "missions/Multi/Dogfight/BoF1/sub/0_2_gg.mis");
MissionLoader(300, -1, "missions/Multi/Dogfight/BoF1/sub/1_2_gg.mis");
MissionLoader(1200, -1, "missions/Multi/Dogfight/BoF1/sub/1_1_gg.mis");
}


public void MissionLoader(int offset, int repeat, string mission)
{
if (offset > 0)
Timeout(offset, () => { MissionLoader(0, repeat, mission); });
else
{
GamePlay.gpPostMissionLoad(mission);
// debugging
//GamePlay.gpHUDLogCenter( side[j].ToString() + " tanks are attacking sector " + activeSector[i].ToString() + "!");

missLoaded++;
GamePlay.gpHUDLogCenter(String.Format("Mission {0} loaded.", missLoaded));

if (repeat > 300 )
Timeout(repeat, () => { MissionLoader(0, repeat, mission); });
}
}

public override void OnTrigger(int missionNumber, string shortName, bool active)
{
base.OnTrigger(missionNumber, shortName, active);

for (int i = 0; i < activeSector.Length ; i++)
{
for (int j = 1; j < side.Length; j++)
{
string str = i.ToString() + "_" + (j).ToString() + "_gg";
if (str.Equals(shortName)) // checks trigger
{

GamePlay.gpPostMissionLoad("missions\\Multi\\Dogfight\\BoF1\\sub\\" + str + ".mis"); // loads tanks mission

//GamePlay.gpHUDLogCenter(side[j].ToString() + " tanks are attacking sector " + activeSector[i].ToString() + "! ***test***");

currSide = side[j];
currSector = activeSector[i];
repeatGroundMsg(90, currSide, currSector);

//initTime = 0.0;
//Timeout(initTime += 90, () =>
//{
// GamePlay.gpHUDLogCenter(currSide.ToString() + " tanks are attacking sector " + currSector.ToString() + "! ***in cycle***");
// //GamePlay.gpHUDLogCenter(addStr + " tanks are attacking sector " + activeSector[i] + "!");
//});
break;
}

}
}

}


private void repeatGroundMsg(int delay, string currSide, string currSector)
{
initTime = 0.0;
Timeout(initTime += delay, () =>
{
GamePlay.gpHUDLogCenter(currSide.ToString() + " tanks are attacking sector " + currSector.ToString() + "!"); // is .ToString() necessary here??
});

}


upd.
OT, but as I do not want to start a new thread for this. Can Timeout(initTime += 90, () => be used inside a cycle? Does it prevents a cycle from further execution? I had some problems with triggers when Timeout(initTime += 90, () => was inside the onTrigger cycle. However current code is probably not different in essence from having Timeout(initTime += 90, () => inside the cycle but it works somehow ))

klem
06-07-2011, 09:16 AM
Purchased a book called "Introduction (or basic) course to C# programming" by a university professor last Saturday. It is only about 200 pages and makes things way easier.

Below is a sample code I wrote yesterday after just 2 days of reading it. Of cause I was using 2 pieces of code from other people: ZaltysZ and naryv, but the book provided enough understanding to combine them and finetune to my needs.

Hi Ataros,

I applaud your dedication and success but coding requires a particular mindset, not complex perhaps but particular. After many years of creating suites of linked Access databases with much Visual Basic programming and some VBS I know I was considered by my entire department to be some kind of geek. I didn't see it like that at first because like you I was on the inside looking out. "if I can understand it anyone can" but they couldn't. And we weren't even talking high level language there!

Yes I could study C#, it doesn't look complicated because most coding fits a certain logical mindset, you just have to learn it's own peculiarities, but I don't really have the time and more importantly the community is mostly like my old department and should have some kind of graphical interface within FMB to allow them to select start times, pick events, assign actions to events, etc etc without writing C#. Now that's a tall order for a company struggling to keep up with the debugging of CoD but it should be on their roadmap.

What would be very useful, and should be do-able by 1C right now, is a list of events (I know you gave some earlier), how to use them, and sample code for many key mission stages like start timing, event selection and actions, identifying army and player and messaging, etc etc, I'm sure you could add many more. Some real cut and paste stuff for those of us caught between C# guru and complete C# novice in which we could easily see where to edit in our own minimal info.

I know there are some good examples posted here by you and a few others but it needs bringing together as a manual or at least a consolidated reference set, perhaps under its own sticky in this forum and locked or heavily moderated to eliminate discussion or the 'reference set' will get lost in the noise. And it should be provided by 1C. I have searched for a couple of weeks to find out how to message individual players and armies under the Timetick example that I think you first showed us but I have had no success. I want to do that because the briefing system doesn't work, at least in Dogfight missions it doesn't, and I also want to send event based or time based 'Controller' messages but for example I don't know how to call up an army or player id under Timetick or set a timer under the other examples that give me an Army or Player.

Its bad enough that we don't have a graphical interface but to give their customers C# scripting without even a catalogue of the game parameters and not even a basic guide is just daft.

ZaltysZ
06-07-2011, 09:50 AM
upd.
OT, but as I do not want to start a new thread for this. Can Timeout(initTime += 90, () => be used inside a cycle? Does it prevents a cycle from further execution? I had some problems with triggers when Timeout(initTime += 90, () => was inside the onTrigger cycle. However current code is probably not different in essence from having Timeout(initTime += 90, () => inside the cycle but it works somehow ))

Timeout() isn't a blocking method in sense that it does not stop code execution until given time passes. It just adds new timer to timer list and exits, so that code which called it could be executed further. So yes, you can use it in loops (cycles).

ZaltysZ
06-07-2011, 10:13 AM
What would be very useful, and should be do-able by 1C right now, is a list of events (I know you gave some earlier), how to use them, and sample code for many key mission stages like start timing, event selection and actions, identifying army and player and messaging, etc etc, I'm sure you could add many more.

I have expressed a wish to developers for having ability to enter arbitrary amount of meta data in ME and access them in script. This way it would be possible to write some kind of universal script, which could interpret meta data and do some things (like timed spawn, auto despawn and so on). This would be useful for mission designers without coding knowledge.

Some real cut and paste stuff for those of us caught between C# guru and complete C# novice in which we could easily see where to edit in our own minimal info.

Cut and paste approach begins to show disadvantages when you need to make multiple parts work together. You simply need to know what those parts do, or desirable result will be hardly reached.

Its bad enough that we don't have a graphical interface but to give their customers C# scripting without even a catalogue of the game parameters and not even a basic guide is just daft.

Start a whining campaign (targeted at Luthier). I am serious. I got impression that devs usually help us only in their free time, and there is no one assigned for writing any documentation/samples/examples for us.