Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik: Cliffs of Dover > FMB, Mission & Campaign builder Discussions

Reply
 
Thread Tools Display Modes
  #1  
Old 06-04-2011, 09:44 PM
MB_Avro_UK MB_Avro_UK is offline
Approved Member
 
Join Date: Dec 2007
Location: London, England (Not European!).
Posts: 755
Default 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.
Reply With Quote
  #2  
Old 06-05-2011, 09:05 AM
MadTommy MadTommy is offline
Approved Member
 
Join Date: Jan 2011
Posts: 493
Default

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.
Reply With Quote
  #3  
Old 06-05-2011, 09:18 AM
Seeker Seeker is offline
Approved Member
 
Join Date: Oct 2007
Posts: 213
Default

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.
Reply With Quote
  #4  
Old 06-06-2011, 11:31 AM
MadTommy MadTommy is offline
Approved Member
 
Join Date: Jan 2011
Posts: 493
Default

Quote:
Originally Posted by Seeker View Post
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 View Post
Simply put, the FMB interface and documentation is awful.
This i could not agree more with.

Last edited by MadTommy; 06-06-2011 at 12:12 PM. Reason: typo
Reply With Quote
  #5  
Old 06-06-2011, 12:05 PM
ZaltysZ's Avatar
ZaltysZ ZaltysZ is offline
Approved Member
 
Join Date: Sep 2008
Location: Lithuania
Posts: 426
Default

Quote:
Originally Posted by Seeker View Post
Yes, you can write a simple home page with Notepad.
I earn money for living by writing complex things in "notepad". 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.

Last edited by ZaltysZ; 06-06-2011 at 02:02 PM.
Reply With Quote
  #6  
Old 06-06-2011, 05:37 PM
Rattlehead Rattlehead is offline
Approved Member
 
Join Date: Sep 2010
Posts: 727
Default

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.
Reply With Quote
  #7  
Old 06-07-2011, 06:50 AM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

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 ))

Last edited by Ataros; 06-07-2011 at 07:20 AM.
Reply With Quote
  #8  
Old 06-07-2011, 08:16 AM
klem's Avatar
klem klem is offline
Approved Member
 
Join Date: Nov 2007
Posts: 1,653
Default

Quote:
Originally Posted by Ataros View Post
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.
__________________
klem
56 Squadron RAF "Firebirds"
http://firebirds.2ndtaf.org.uk/



ASUS Sabertooth X58 /i7 950 @ 4GHz / 6Gb DDR3 1600 CAS8 / EVGA GTX570 GPU 1.28Gb superclocked / Crucial 128Gb SSD SATA III 6Gb/s, 355Mb-215Mb Read-Write / 850W PSU
Windows 7 64 bit Home Premium / Samsung 22" 226BW @ 1680 x 1050 / TrackIR4 with TrackIR5 software / Saitek X52 Pro & Rudders

Last edited by klem; 06-07-2011 at 08:43 AM.
Reply With Quote
  #9  
Old 06-07-2011, 08:50 AM
ZaltysZ's Avatar
ZaltysZ ZaltysZ is offline
Approved Member
 
Join Date: Sep 2008
Location: Lithuania
Posts: 426
Default

Quote:
Originally Posted by Ataros View Post
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).
Reply With Quote
  #10  
Old 06-07-2011, 09:13 AM
ZaltysZ's Avatar
ZaltysZ ZaltysZ is offline
Approved Member
 
Join Date: Sep 2008
Location: Lithuania
Posts: 426
Default

Quote:
Originally Posted by klem View Post
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 View Post
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 View Post
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.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:37 PM.


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