Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   FMB needs to be much more User Friendly. (http://forum.fulqrumpublishing.com/showthread.php?t=23571)

MB_Avro_UK 06-04-2011 09:44 PM

FMB needs to be much more User Friendly.
 
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 09:05 AM

The mission editor is very simple compared to other flight mission mission editors.

Creating a delayed spawn is also very easy, here 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 09: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 11:31 AM

Quote:

Originally Posted by Seeker (Post 293640)
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#.

Quote:

Originally Posted by Seeker (Post 293640)
Simply put, the FMB interface and documentation is awful.

This i could not agree more with.

ZaltysZ 06-06-2011 12:05 PM

Quote:

Originally Posted by Seeker (Post 293640)
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 05: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 06: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.

Code:

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 08:16 AM

Quote:

Originally Posted by Ataros (Post 294430)
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 08:50 AM

Quote:

Originally Posted by Ataros (Post 294430)
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 09:13 AM

Quote:

Originally Posted by klem (Post 294456)
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.

Quote:

Originally Posted by klem (Post 294456)
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.

Quote:

Originally Posted by klem (Post 294456)
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.


All times are GMT. The time now is 10:29 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.