Modding compared with Sup Com

Discussion in 'Planetary Annihilation General Discussion' started by Raevn, August 18, 2012.

  1. lophiaspis

    lophiaspis Member

    Messages:
    215
    Likes Received:
    2
    I don't know, there's a big difference between the devs integrating the tool in the game, and having to download it from some guys doing it in their free time. Both in terms of accessibility, stability and polish, in my experience.
  2. Pawz

    Pawz Active Member

    Messages:
    951
    Likes Received:
    161
    I dunno, I think Uber has a real chance here to dynamically update their start menus and user interface to include community content seamlessly into the game.

    I mean, they're already talking about how the server will simply be serving the clients a webpage - is it that big of a jump to assume the main game menu will be some form of HTML5?

    If it IS, it's going to be possible to do things like serve up to the SINGLE PLAYER person, a list of the most popular mods of the week, along with changing the menu to include development tools, whether fan-made or uber made.

    So yeah, if they do it right (and I believe they will) it's going to be a LOT easier for players to find mods and tools without leaving the game.
  3. japporo

    japporo Active Member

    Messages:
    224
    Likes Received:
    118
    Mirroring the choice of Javascript for the UI, I beg of you, please use a mainstream language like C#/Mono, Java, or C/C++.

    C++ is still, I think, the logical choice, as it is still the programming lingua franca that almost any other language can easily be bridged to and is likely to stay that way for the forseeable future.
  4. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    It can't be C++ because it compiles to binary and we are cross platform. I thought about embedding LLVM but the sandboxing support just isn't there.
  5. dallonf

    dallonf Active Member

    Messages:
    124
    Likes Received:
    34
    Here are my thoughts on language:

    C++: Already confirmed not to be C++. This is OK in my opinion; C++ is a bit overkill for a mod tool like this and poses too many technical risks.

    Java/C#: It's possible. If they went this route, I would recommend C#/Mono (can't use .NET because it's Windows-only, but Mono is quite good) over Java; it's simply a more advanced framework that's more fun to work with. The disadvantages of this approach is that the code has a compile step, so it'll be slower to get code in-game, and will probably need dedicated tools or plugins for tools (e.g. MonoDevelop, Eclipse). On the other hand, the code completion in those tools mean that the APIs are more or less self-documented.

    Lua: It's an established standard for game modding. While I'm not the biggest fan of Lua, I'm curious why Uber isn't considering it.

    Python: I haven't heard of too many games that use Python for modding, but it's a nice language. Most (or at least a lot of) modders will be learning programming for the first time, and there's a ton of great resources for Python newbies and it's a good first language anyways.

    Ruby: There's better options, really. While I like the language, the Ruby interpreter is a bit slow, and I've never seen it used for games (with the exception of RPG Maker).

    JavaScript: It's actually a pretty good option. JavaScript is being used for pretty much everything nowadays and there's a lot of beginner's resources for it. Plus with newer interpreters like V8, it's incredibly fast. The disadvantages are that the core library is a bit weak, and the mechanics in general are quite messy (global variables by default </3). Also, its brain-dead name means that a lot of newbies will start looking up resources for Java and the community will have to inform them time and time again that they are not remotely the same language.

    Proprietary language: Does Uber really have time to write a custom scripting language?

    Ultimately, the language itself doesn't matter for experienced modders; I hold that once you know two different languages, you can pick up any other in a matter of days (with a few exceptions like Assembly and Haskell). The main thing I want to see is the ability to edit my code and see the changes without closing the game. It's OK if I have to press a keyboard shortcut to reload my scripts or restart the match - but I really don't want to wait for the game to launch every time I tweak a value. That's what's turned me off of modding for most other games.
  6. sylvesterink

    sylvesterink Active Member

    Messages:
    907
    Likes Received:
    41
    Clearly you've never experienced Mono on Linux. No. This is not a solution that should even be considered. Java has its issues, and Oracle's control isn't helping matters, but it is a way better cross-platform choice than C#. Really, Python (and perhaps Javascript, given Uber's bent towards it) are the best choices listed. Lua's already out. I rather lean towards Angelscript, but that seems to be unlikely too. We'll just have to see where Uber goes with it, since they already chose some mysterious solution.
  7. paprototype

    paprototype Member

    Messages:
    138
    Likes Received:
    1
  8. syox

    syox Member

    Messages:
    859
    Likes Received:
    3
    I think you should distinguish between front and backend of the 'modengine'.

    Something i just wondered is how will be the implementation of usergenerated things to save. Access to a Filemanager, Cookies :)? <--- maybe thats the Uber Cookie
    ,or just API?
  9. feyder

    feyder Member

    Messages:
    88
    Likes Received:
    13
    I will be glad to be able to mod PA with C++ rather than learning LUA.
  10. chirmaya

    chirmaya Member

    Messages:
    30
    Likes Received:
    1
    As long as I can work with classes/objects in a non-hacky way, I'll be happy. *Glares at LUA*
  11. BulletMagnet

    BulletMagnet Post Master General

    Messages:
    3,263
    Likes Received:
    591
    It really wasn't that bad.
  12. brandonpotter

    brandonpotter Well-Known Member

    Messages:
    966
    Likes Received:
    389
    I think alot of us worked with Lua, and gotten used to it. So it will be a lil different adjusting to whatever system that PA will use... Though, I wish they would release what kind of coding they will use for Mod support, so we can start studying the code XD
  13. Pawz

    Pawz Active Member

    Messages:
    951
    Likes Received:
    161
    Well, you know already they're going to be using HTML5 for the UI layer, that's one spot to start for learning to mod.
  14. japporo

    japporo Active Member

    Messages:
    224
    Likes Received:
    118
    Could you elaborate a bit? What sort of problems are there?

    I'm with dallonf in preferring C# vs. Java: the language is syntactically cleaner IMO, MS provides a wealth of developer documentation and resources through MSDN, it's pre-installed on the majority of desktop systems, and I'm just not persuaded that Oracle has that much interest in maintaining Java on the desktop over the long term.

    (Another demerit of Java, which is more a matter of personal opinion, is running the risk of accidentally getting whichever toolbar Oracle is currently being paid to bundle with the JRE if you forget to uncheck the checkbox during every single update. I understand the economics of it but it still feels unprofessional. I wouldn't put up with it if Minecraft wasn't such a blast. :) )
  15. chirmaya

    chirmaya Member

    Messages:
    30
    Likes Received:
    1
    I'm 100% with you on this ^_^
  16. dallonf

    dallonf Active Member

    Messages:
    124
    Likes Received:
    34
    I'd prefer C# over Java (as far as syntax goes, not sure about performance - sylvesterink's right in that I haven't used Mono on Linux), but I'd prefer an interpreted language over either of them. Modding should be fun, and compiling is not fun.
  17. sylvesterink

    sylvesterink Active Member

    Messages:
    907
    Likes Received:
    41
    Mono's performance on Linux varies. Originally, it was slower and used more memory than Java. In the past year or so, it's gotten to be comparable to Java in memory usage, but it tends to be slower in performance depending on the features being used. (At one point this was due to the implementation of the garbage collection, but I think that has been fixed by now.) Performance really depends on the new features added to .NET as it's developed and how mature the implementation in Mono is.

    This brings about the second issue, which is that Mono trails .NET in its implementation of new features and versions. This is a byproduct of them playing catch-up to Microsoft, who controls development of .NET. So using the latest features available to .NET may give you issues when trying to run it in Mono on Linux.

    Finally, there's the issue of patent encumbrance. Since MS owns patents associated with .NET, there's the potential that they could decide to sue Mono and possibly shut it down. Mono claims to have contingency plans in place, but the fact is that .NET is proprietary, and that leaves it open for all sorts of abuse by MS. This is why some Linux users prefer to avoid becoming dependent on software that relies on a Mono implementation.

    Now, that's not saying Mono is entirely bad. It's good that it exists to provide that cross platform capability, much like WINE. But if the development decisions can be made to avoid it, then they probably should be. And while Java certainly has its own issues, others such as Python fill the role just as well, while maintaining a more open environment.
  18. Gabberkooij

    Gabberkooij New Member

    Messages:
    20
    Likes Received:
    0
  19. dallonf

    dallonf Active Member

    Messages:
    124
    Likes Received:
    34
    So what you're saying is that Mono isn't necessarily a bad experience on Linux, but it goes against the principles of Linux users? I guess can understand that, although I personally think Linux users tend to be too picky :p
  20. sylvesterink

    sylvesterink Active Member

    Messages:
    907
    Likes Received:
    41
    Well, it certainly isn't a great experience, but it isn't as terrible as it once was. (Which wasn't any fault of the programmers, who were again trying to play catch-up.)

    As for Linux principles, I'm fairly lenient in my stance on several of those points. For example, while I prefer that the drivers, such as those for graphics, remain open, I understand the necessity for closed drivers in many cases. However, I actively support those companies that support Linux (I only buy AMD videocards, as they are at least making the effort to open-source the drivers). The reason this point is so critical is that open drivers perform better, are easier to maintain, and have better long term support. Intel graphics performance works so smoothly on Linux precisely because of its open nature.

    But at the same time, some people go a little too far, demanding that all Linux software be open. Some people complain about closed source software (most notably games, and recently Steam) runs against these principles, but as none of these pieces of software is critical to Linux use, I'm willing to support those pieces of software.

    The key to all of this is that with nearly every piece of software available on Windows, there is a free, open source Linux equivalent that works just as well, if not better than its counterpart. (The exception being games, but I feel that falls into its own category.) So if proprietary languages and frameworks, like C# and .NET, become the foundation for more and more software projects, that increases the number of affected software if some issue does arise between MS and open implementations like Mono.

    To add my own personal bias, I'm not a fan of how quickly programmers jump to use something like C# or Java for every single project they can conceive. Perhaps it's because I have a preference towards small, efficient programs. (I program software using Vim and the Linux terminal, rather than an IDE.) But neither C# or Java are known for being small and fast. Instead they are easy to learn and use, which is probably why so many developers jump at the chance to use them. (And here I could go off on a tangent about choosing the right language for the job, but I'm rambling enough as it is.) Python is no better, performance-wise, but it has the advantage of being the most open of the three, which is why I give it the nod when it comes to that set of languages.

    When it comes down to modding a game, the mod code will need to perform very well in order to keep the game itself from bogging down, and in these cases, scripting languages like Lua and Angelscript tend to shine.

    Anyway, I'm not a modder, so I wouldn't know all the details, but I do know enough to say that choosing .NET would not be ideal with regards to game performance, nor would it be ideal when it comes to running software cross-platform.

Share This Page