Announcement

Collapse

The Infinity Blade Forums Have Moved

We've launched brand new Infinity Blade forums with improved features and revamped layout. We've also included a complete archive of the previous posts. Come check out the new Infinity Blade forums.
See more
See less

Cooking and Packaging

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cooking and Packaging

    Hi All,

    Apologies in advance for the length of this initial post; it looks like there are others who can benefit from solutions to issues like this one, and by going into detail about my problems, I hope this post can clear up some confusions down the road.

    The gist of this thread is trying to better understand the cooking/packaging process to deploy custom games. Specifically in my case, I'm running into some issues when trying to run my custom game type with multiple clients across a LAN network; when I cook and launch the game via UnrealFrontend with the "Use Cooked map" flag checked, I get various errors depending on how I configure my DefaultEngine.ini - will get into that more in a second.

    It's my understanding that to run a custom game type (in this case inheriting from UTGame) networked, we're supposed to cook and package the map via Unreal FrontEnd. Also, that FrontEnd references DefaultEngine.ini when determining which packages to cook and how exactly to cook them (this is laid out in https://udn.epicgames.com/Three/SettingUpUnrealEngine3 entitled "Content Cooking: how to setup and configure your game to use the cooker")

    In my custom game - UT3OSC - I derive my game type from UTGame and have extended a number of classes including UTPlayerController, UTPawn, a number of weapon and projectile classes, InterpActors, Triggers, etc. Additionally, I use a custom .dll via DLLBind to transmit game information out of UDK into custom sound servers (for more info see http://ccrma.stanford.edu/wiki/UT3OSC ).

    My game works extremely well compiling and launching via FrontEnd not using cooked maps. I absolutely need to be able to have multiplayer connectivity so I've started trying to cook and package my game, which is where I've run into some issues.

    First I tried cooking and packaging without changing anything in DefaultEngine.ini other than those changes I had made previously to configure the game, such as adding +EditPackages to [UnrealEd.EditorEngine]. In that instance, cooking my custom map wouldn't include my UT3OSC.u file in the CookedPC directory when it was finished. Additionally, when I tried to package my project, my .dll wasn't copied into the package and I was missing references to the ShockRifle graphic assets (both the weapon itself and the projectiles) which are found in UTGameContent. Initially I could manually copy my dll and my UT3OSC.u and UTGameContent.u from the Scripts directory and get the basics working, though the ShockRifle graphic assets never would appear.


    After reading through the UDN "Content Cooking" guide, I had a better understanding of the Cooking process and it seemed logical that if I would reference my package as a Startup package, then it would be cooked and available for use in a packaged game. After adding "+Package=UT3OSC" to [Engine.StartupPackages], and doing a full Recook, my UT3OSC package wasn't referenced at all in the output from the cooker, not even in the "Cooking [Combined] Startup_INT with:" section. Launching the cooked level in FrontEnd results in an error:

    Code:
    "Warning: Warning, Failed to load 'Class UT3OSC.UT3OSC': Failed to find object 'Class UT3OSC.UT3OSC'" And my game type wasn't loaded (i.e. "Game class is 'GameInfo')

    I next tried adding my map and my package to the [Engine.PackagesToForceCookerMap] section as ".Map=OSC-tele_harmonium_a_02" and ".Package=UT3OSC". After a recook, in the Cooker output I see:

    Code:
    "Cooking [Seekfree] OSC-tele_harmonium_a_02
       Forcing UT3OSC into OSC-tele_harmonium_a_02"
    Upon launching with the cooked map, UDK freezes up, leaving this in the log:

    Code:
    "Log: LoadMap: OSC-tele_harmonium_a_02?Name=Player?team=255?game=UT3OSC.UT3OSC
    Critical: appError called: Can't bind to native class UT3OSC.ActorFactoryOSCInterpActor
    Critical: Windows GetLastError: The system cannot find the fle specificed.<2>"
    When trying to add the package to [Engine.StartupPackages], I see "Adding script ..\..\UDKGame\Script\UT3OSC.u for cooking..." in the cooker output but have the same results as the first StartupPackage attempt.

    I also tried setting the package as a SeekFreePackage, resulting in "Cooking [Seekfree Standalone] UT3OSC_SF from UT3OSC", but same error.

    Any wisdom in sorting out how to best proceed through the Cooking -> Packaging process as such would be much appreciated. I've seen various responses throughout these boards stating that the process is currently broken (I'm running the July UDK) and that only third-party packagers will currently work. Also, my understanding is that its hard to network via individually compiled FrontEnd projects (i.e. 2 developers each compiling, as a unique id is added to the tag. Any thoughts on these ends would be most welcome as well.

    I can post any logs for anyone willing to help out.


    best,

    Rob


    Links:

    http://forums.epicgames.com/showthre...1#post27580921
    http://forums.epicgames.com/showthre...0#post27580950

  • #2
    In UDK releases prior to July, and I don't know if this was fixed in July or August, the game packager does not include DLLBind DLL's with it. (you could probably ship the DLL and have the user place it where it belongs seperately)

    You don't need to package and cook everything to use multiplayer functions, you just need to make sure that everyone has identical files. This is why you should have one person build all the script packages and such, and then distribute them to everyone else. (this is also why doing a Package Game works, because then everyone has identical files as well)

    I've seen a ton of people with problems with the cooking and packaging process on these forums, but have been largely unable to duplicate these problems on my own.

    Comment


    • #3
      Hi Blade,

      Thanks for your response. I had seen discussions mentioning that you can run multiplayer via FrontEnd as long as the filesets were identical. I actually gave it a try, copying my entire UDK directory to another machine and running from there, though in retrospect, I think I built the app on the second machine, which would cause an error.

      I'll give it another try tonight. In the meantime, do you have a handle on which files exactly need to be the same... exactly?

      thanks!

      rob

      Comment


      • #4
        What you basically need to duplicate:

        Binaries\*
        UDKGame\Content\*
        UDKGame\Script\*

        then tell it "no" if one or both of the games asks you if you want to rebuild.

        On the other hand, a fully cooked and package game runs monstrously faster than the development vers

        Comment


        • #5
          Following up on Blade's suggestions, I compiled my latest code and copied the entire UDK-2010-07 directory over to a second machine running on my local home wireless network.

          He's indeed correct, I can run a LAN game and connect to a Multiplayer game running my UT3OSC code. Some files must have been off the first time I tried this, or most likely, I went ahead and compiled the code on the target machine, not realizing that the compilations have to have the same ID.

          Thanks Blade for your wisdom, hopefully the Cooking/Packaging systems will be up and running soon in future UDK versions.

          best,

          rob

          Comment


          • #6
            As far as I know, it all works (I've done it with Dec to Jan releases, i haven't had a need to package anything since), except that the installer cannot be persuaded, as far as anyone i've talked to has found, to include the DLLBind files with it, so if you're distributing a free thing, you'd have to ship your dll seperately. I do seem to remember someone saying that that was fixed recently, perhaps in the July or August builds .. but they may have thought I was asking about a different thing, too.

            Comment


            • #7
              Persist this problem in UDK? i'm doing the package with 2010-05 version, anyone tested if with the lastest version (September) the udk installer includes custom dllbinds? :S

              Comment

              Working...
              X