“It’s the most moddable game ever.”

sheena_yanaisheena_yanai Join Date: 2002-12-23 Member: 11426Members
edited September 2012 in Modding
<div class="IPBDescription">maybe, but its not exactly mod friendly</div>made some <a href="http://yanai.blackmage.org/sky2/NS2/index.php?dir=Sounds/" target="_blank">voice overs</a> for my exos since that crysis like heavily distorted "IM THE JUGGERNAUT BEESH!" megatron voice kinda blows, i could barely make out what it was saying, i had to extract them to listen to :o

yeah..well..

but getting the sounds back into the game...


screw that fmod designer.
and soundinfo.exe or whatever else you need to get 3 sounds back into NS2


cant we have a similar system like the old .pak system when the game could priorize and load matching file structures and same filenames which are located in the same directory as the .pak files?

spent hours just trying to figure out that file system, and got frustrated by it when i remembered its supposed to be the most moddable game ever, when i cant even figure out how to replace files.




edit: dang, just realized i am not in the creations forum.

commando! need a phasegate!

Comments

  • JibrailJibrail Join Date: 2009-04-16 Member: 67200Members
    I second that, I made sounds for combat mode and later realized that we can't put them in, I hope UWE takes a closer look at these kind of stuff and make it easier, maybe enable us to directly link to a mp3 or wave file just like goldsrc and source engine.
  • RobustPenguinRobustPenguin Join Date: 2012-08-17 Member: 155719Members
    Only, being able to put your own sounds in and play with others would be horribly abusive. A mod would be an entirely different type of the game, not just changing stuff as you want it. EG if you can put sounds in then i could put a glow in the dark skin for skulks in...
  • JowJow Join Date: 2011-06-23 Member: 106032Members
    <!--quoteo(post=1978987:date=Sep 17 2012, 06:15 AM:name=RobustPenguin)--><div class='quotetop'>QUOTE (RobustPenguin @ Sep 17 2012, 06:15 AM) <a href="index.php?act=findpost&pid=1978987"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Only, being able to put your own sounds in and play with others would be horribly abusive. A mod would be an entirely different type of the game, not just changing stuff as you want it. EG if you can put sounds in then i could put a glow in the dark skin for skulks in...<!--QuoteEnd--></div><!--QuoteEEnd-->

    That's what consistency checking is for, which they are going to implement.
  • DghelneshiDghelneshi Aims to surpass Fana in post edits. Join Date: 2011-11-01 Member: 130634Members, Squad Five Blue, Reinforced - Shadow
    <!--quoteo(post=1978987:date=Sep 17 2012, 02:15 PM:name=RobustPenguin)--><div class='quotetop'>QUOTE (RobustPenguin @ Sep 17 2012, 02:15 PM) <a href="index.php?act=findpost&pid=1978987"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Only, being able to put your own sounds in and play with others would be horribly abusive. A mod would be an entirely different type of the game, not just changing stuff as you want it. EG if you can put sounds in then i could put a glow in the dark skin for skulks in...<!--QuoteEnd--></div><!--QuoteEEnd-->
    I don't really understand why this is relevant at all?
  • MagnetoMagneto Join Date: 2010-12-22 Member: 75856Members
    Yeah they need to put more work into making the tools and guides better, there's still a lot of basic things that aren't explained well with information all over the forums and wiki.

    Some annoying bugs still exist in the editor, things going off grid when moving, models flipping, textures not locking, lots of little time saving features could be added, it's not really fair to waste peoples time with these silly things, better tools will make better content faster.
  • YuukiYuuki Join Date: 2010-11-20 Member: 75079Members
    It's more an "open source" game than a moddable game right now, with no documentation.
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    <!--quoteo(post=1979019:date=Sep 17 2012, 02:04 PM:name=Yuuki)--><div class='quotetop'>QUOTE (Yuuki @ Sep 17 2012, 02:04 PM) <a href="index.php?act=findpost&pid=1979019"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->It's more an "open source" game than a moddable game right now, with no documentation.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Sure, modelling and sound tools need to be at a much higher level than they currently are for this to be the able to claim the most modifiable game available.

    I do however think the moddability is still good. I can, since I am making full mods, just create my own sound files, and not use the NS2 sounds at all, but that is a lot of work. I can still however extract and use some NS2 sounds in my own mod sound file.

    It depends on how much sound customisation you want. If you want complete sound customisation, it is very easy to make your own sound files. If you want to edit sounds in NS2, that produces a whole different can of worms, with regards to cheating etc.

    I think what we really need is clarity on what will be moddable and how at release v1.0.
  • MOOtantMOOtant Join Date: 2010-06-25 Member: 72158Members
    <!--quoteo(post=1978987:date=Sep 17 2012, 02:15 PM:name=RobustPenguin)--><div class='quotetop'>QUOTE (RobustPenguin @ Sep 17 2012, 02:15 PM) <a href="index.php?act=findpost&pid=1978987"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Only, being able to put your own sounds in and play with others would be horribly abusive. A mod would be an entirely different type of the game, not just changing stuff as you want it. EG if you can put sounds in then i could put a glow in the dark skin for skulks in...<!--QuoteEnd--></div><!--QuoteEEnd-->
    That's what pure servers are for and also more specific whitelists. One server could want sounds from GCF while another would allow it to be modified.
  • MOOtantMOOtant Join Date: 2010-06-25 Member: 72158Members
    edited September 2012
    I don't know about others but when I try to change something in Lua files it's updated more or less instantly BUT:
    if there's any error it causes another error that console is spammed with and I don't know what was the original one

    If I run game in decoda, it tells me where the error is but I can't fix the code and continue as it's possible with Lisp. So I have to run game from decoda which takes like 3 minutes to start because if I try to attach to already running game breakpoints don't work.

    And most of all - no static types. It takes more determination than most confusing spaghetti C++ code if you want to understand longer Lua files. Code is both spaghetti-like because of use of (class) global variables and confusing because it's untyped.
  • ImbalanxdImbalanxd Join Date: 2011-06-15 Member: 104581Members
    Screw the tools, focus on the game for now.
  • sheena_yanaisheena_yanai Join Date: 2002-12-23 Member: 11426Members
    Anyways, feel free to download and use my voice overs if you know how to. I expect the only way to implement these is to do a repack of the "streamed" archive which is about 30 megs in size, only to get these 3 to work.
    I kinda think i did the startup sequence to much like mech warrior. Im open to sugestions and requests to do some more voice overs. Maybe drop me some lines what it should say instead. I might even do some beefier sounds for the exos walk, since it sounds a bit light, adding some nicer servo sounds.
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    <!--quoteo(post=1979044:date=Sep 17 2012, 02:56 PM:name=MOOtant)--><div class='quotetop'>QUOTE (MOOtant @ Sep 17 2012, 02:56 PM) <a href="index.php?act=findpost&pid=1979044"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->I don't know about others but when I try to change something in Lua files it's updated more or less instantly BUT:
    if there's any error it causes another error that console is spammed with and I don't know what was the original one<!--QuoteEnd--></div><!--QuoteEEnd-->

    Let me say, I am not a programmer, yet I have produced over 10 mods for NS2, including 4 full gameplay mods, of which I am actively still developing 2. I know some very basic programming, but even I can go through the log trails and work out the problems. Maybe you are used to systems that do this kind of thing for you, but as I said, I don't use other programming languages, I can pretty much only use NS2 lua for programming.

    I just open the log file, and go through the trail, following the code and the variables that are being passed until I see the source of the error. It really is easy. Maybe it's easy because I don't know any other ways of doing things, but I know trying to solve problems for me in C++ code (namely the source engine) was impossible and I gave up programming it after 4 months and only adding dual pistols and changing the bullet spread :P

    I can't think of anything easier to bug hunt in than ns2's lua code, but that is because I haven't used any tools that do the tracking work for you. Also I learn all I have about the code, precisely because of this method of bug hunting.

    If someone with as little programming knowledge as me can produce mods like I can, there can't be that much wrong with the bug-hunting methodology this requires you to use. Oh and I don't use decoda to hunt bugs, purely because my PC can't handle running a debugger and game at the same time, and I wouldn't know how to use a debugger properly anyway...
  • MOOtantMOOtant Join Date: 2010-06-25 Member: 72158Members
    I'm used to GHCi where if compiler errors stop appearing, code is correct. :)
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    I find compiler errors stopping appearing just means there are no syntax errors. I've never had a compiler be able to catch my logic errors :P
  • MOOtantMOOtant Join Date: 2010-06-25 Member: 72158Members
    Then you haven't tried Haskell/Ocaml. It's not magic, it is that way because you encode "logic" a lot more directly and every mismatch has very high chance of causing type error. It is also because you'd usually avoid mutating data.

    You can also have types that tell you how long vector is.
    <a href="http://www.youtube.com/watch?v=C4D96LVtRMo&feature=player_detailpage#t=920s" target="_blank">http://www.youtube.com/watch?v=C4D96LVtRMo...tailpage#t=920s</a>
    The more rich the type system the harder it is to prove anything especially automatically (by the compiler).

    On the other hand Haskell isn't (wasn't) exactly runtime debugging friendly. You can for instance see reaction of Haskell programmers to a working stack trace:
    <a href="http://www.youtube.com/watch?v=J0c4L-AURDQ&feature=player_detailpage#t=1290s" target="_blank">http://www.youtube.com/watch?v=J0c4L-AURDQ...ailpage#t=1290s</a>
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer
    <!--quoteo(post=1978896:date=Sep 17 2012, 01:26 AM:name=sheena_yanai)--><div class='quotetop'>QUOTE (sheena_yanai @ Sep 17 2012, 01:26 AM) <a href="index.php?act=findpost&pid=1978896"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->cant we have a similar system like the old .pak system when the game could priorize and load matching file structures and same filenames which are located in the same directory as the .pak files?<!--QuoteEnd--></div><!--QuoteEEnd-->
    That is essentially how our modding system works. The problem is with how FMOD works with files. It wants them all packed up into those FSB and FEV files, so you can't really overwrite individual files.
  • internetexplorerinternetexplorer Join Date: 2011-10-13 Member: 127255Members
    edited October 2012
    I'm curious about this topic too (not fmod/sound, but moddability).

    A few weeks ago I started on the early stages of a really ambitious project. I went to play with it again today and it just crashes, because of something in build 220/221 that isn't playing nicely with it. I'll get it working at some point tonight, but stuff like that really kills my motivation.

    Are there plans to have a stable, stripped-down codebase? This game obviously has a lot of modding potential (by design) but I don't feel like it's possible to really work on something big yet. If everything is relegated to mods like combat, marine vs marine and HUD changes, why put all that work into the LUA frontend?
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    I have made some massive stripped out changes, essentially a TDM framework, trouble is it breaks every build. I really can't be bothered to fix it at the moment, so I am waiting for a stable version of NS2 before bringing it to teh table again, but it is fairly simple to do, when you've done it as many times as I have over the last 8 months anyway.

    As soon as UWE decide the code base is stable, or they release a 'Mod Friendly' code base that doesn't get updated every week, I will be back on this and sharing it out for everyone to use :D
  • MCMLXXXIVMCMLXXXIV Join Date: 2010-04-14 Member: 71400Members
    edited October 2012
    I've said this since I started the relaunched combat mode - you really should implement all mods using hooks where possible (look at Soul Catcher or Combat for example). It solves most of the maintenance headaches of merging UWE's changes into your own. Any new custom functionality that fits on top of NS2's existing infrastructure can then use standard class-based inheritance and custom Mixins to get things done.

    I will try and write a little guide on how to do it successfully with Hotloading support and blocking the loading of certain classes (something I'm looking into at the moment) using fsfod's class H.ooker and load structure - it's worked very well for us with Combat (though new builds do tend to break things every now and then, the level of difficulty in getting everything merged and working again is far lower and we are usually back up and running within a couple of hours).

    I am about to undertake a similar 'stripping down' project called SparkBasic (which I'll put on GitHub), which just has players with marines running around with two teams and the basic class functionality - none of the specialised classes, structures or weapons included. The idea is that this can then act as a stable base for other projects to fork and pull changes from. I'll do this using the hooks functionality, classloader and script load blocking, which should make it straightforward for others to extend upon and add their own functionality to.
  • internetexplorerinternetexplorer Join Date: 2011-10-13 Member: 127255Members
    You're doing god's work, my son.
  • AgielAgiel Join Date: 2006-11-14 Member: 58605Members, Constellation, NS2 Playtester, Subnautica Playtester
    <!--quoteo(post=1987835:date=Oct 6 2012, 03:32 PM:name=MCMLXXXIV)--><div class='quotetop'>QUOTE (MCMLXXXIV @ Oct 6 2012, 03:32 PM) <a href="index.php?act=findpost&pid=1987835"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->I am about to undertake a similar 'stripping down' project called SparkBasic (which I'll put on GitHub), which just has players with marines running around with two teams and the basic class functionality - none of the specialised classes, structures or weapons included. The idea is that this can then act as a stable base for other projects to fork and pull changes from. I'll do this using the hooks functionality, classloader and script load blocking, which should make it straightforward for others to extend upon and add their own functionality to.<!--QuoteEnd--></div><!--QuoteEEnd-->
    I've been planning to do this for a while but decided to wait until the code base becomes more stable. If you finish before then, then all the more power to you. And it'd save me a lot of time! :)
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    Well, mine framework won't be finished until after i've distilled Proving Grounds down fully. Once I have my core basics for Proving Grounds, I will fork a dev base off from that.

    Mine will be quite some time as I am taking a break from modding for a while as I concentrate on my programming courses. As long as UWE gives us at least a week with the 'Gold' code before release, I will have a GorgeCraft and Proving Grounds release for v1.0. They won't be final, but they will be functional, and hopefully fun :D
  • MCMLXXXIVMCMLXXXIV Join Date: 2010-04-14 Member: 71400Members
    edited October 2012
    I found a good way to remove some of the extended functionality from NS2 while still being able to use hooks to modify the parts that you want to keep. This version works if both the Client and Server include the file. It required a little modification to fsfod's LoadTracker.lua, which I've submitted a pull request to him for, available <a href="https://github.com/AlexHayton/NS2ModLoader/commit/fbaadfa44e5dd6adcb492176a7333a22e1dd0cd7" target="_blank">here</a>:

    <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// Case doesn't matter here!
    kCombatFileRemovals = {
        "lua/CommAbilities/Alien/Bonewall.lua",
        "lua/CommAbilities/Alien/CragBabblers.lua",
        "lua/CommAbilities/Alien/NutrientMist.lua",
        "lua/CommAbilities/Alien/Rupture.lua"
    }

    // Case matters here!
    kCombatEntityStubs = {
        "BoneWall",
        "CragBabblers",
        "NutrientMist",
        "Rupture"
    }

    if #kCombatFileRemovals > 0 then
        Shared.Message ("Registering file removals...")
    end

    for index, override in ipairs(kCombatFileRemovals) do
        Shared.Message ("Removing source file " .. override)
        
        // Hook into the load tracker code to remove the file when we come across it.
        // The normalized string is always lower case.
        override = string.lower(override)
        LoadTracker:SetFileOverride(override, "")
    end

    for index, stub in ipairs(kCombatEntityStubs) do
        Shared.Message ("Stubbing the entity " .. stub)
        
        local result, error
        result, error = loadstring(stub .. " = {}")
        pcall(result)
        
        result, error = loadstring(stub .. ".kModelName = \"\"")
        pcall(result)
        
        result, error = loadstring(stub .. ".kMapName = \"\"")
        pcall(result)
    end<!--c2--></div><!--ec2-->

    I will attempt to create SparkBasic in the next month or so. At the end of that project, there will probably be a useful baseline for other mod developers wanting to make total conversion projects but without having to work out how to make a basic starting point for their code. All you'd have to do is fork SparkBasic and if SparkBasic changes just pull in the changes using Git.

    The advantage of this method is that by and large it shouldn't need a lot of actual maintenance work in order to benefit from optimisations made in the basic Spark classes like ScriptActor, PlayingTeam etc.
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    Unfortunately, the code is really convoluted, and you will remove access to something, say the commander, and the you get a function call which isn't being called, then you discover techbuttons.lua is only called from commander, and the team files call a function in it.

    There are obviously multiple ways to solve it, but I can tell you from experience, NS2 is littered with these calls that break seemingly unrelated things when you remove 1 item. I know, I seem to find more every time I restart the code. :D
  • MCMLXXXIVMCMLXXXIV Join Date: 2010-04-14 Member: 71400Members
    Yes I've noticed a lot of that, I'm still working on it - I started by removing most of the stuff in Shared.lua and working forward from there...
Sign In or Register to comment.