Spark SDK Manual - Updated 19/July/2015

IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
edited July 2015 in Modding
Summary:

Access the current weekly build of the manual here.

Contribute Directly via GitHub Here.

Provide feedback by posting in this very thread...

Original Post:
Hello, recently(about 2 days ago) I decided to write an unofficial manual for the spark engine sdk (software development kit). Before I get too far into it, I'm just curious as to what other people think of the current state of documentation?

Is this needed? Is it wanted? Is it already done somewhere?

I intend to cover four major categories: Concepts, Tools, Reference and Instructions.

Concepts are the way the spark engine works and handles things, why it handles them. Information on what underlying technologies are there, how they work and how you should think about it (e.g. ns2's implementation of lua).

Tools are the tools explicitly provided in the NS2 install for modding the game, so that'll be: launchpad, spark editor, decoda and a bunch of other things like builder.

Reference will be specifications (prop limits, performance figures, model specs etc), entire available script description, that sort of thing.

Finally Instructions are essentially tutorials, but I feel the term instruction fits better. That will go over individual self contained tips on how to do things and how best to do certain things.

I will be reaching out for help once I've solidified the documentation style and I've almost formulated a nice way on how people can help out.

I may custom code a html/javascript website, I may use media wiki or I may use wikidot to host it. Not entirely sure. For now it'll be stored as open document text files.

So yeah, what do you think about writing an unofficial manual on the spark sdk? and who would be interested in writing content for it?

Current Progress:
(7/10/2013) Finished Interface overview: Other windows, Console Output and Infobar.
(6/10/2013) Finished writing explanation of the viewport(s).
(5/10/2013)Finished writing descriptions for the file menu area, also wrote a description for the toolbar area.
Started Documenting The Spark Editor(4/10/2013). Currently working through the most boring bit (the top file menu area).
No further progress will be posted in this spoiler, see the github for news or just read through the thread.

Comments

  • GhoulofGSG9GhoulofGSG9 Join Date: 2013-03-31 Member: 184566Members, Super Administrators, Forum Admins, Forum Moderators, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Reinforced - Supporter, WC 2013 - Supporter, Pistachionauts
    In generall i think this is a good idea to collect all infos which are out there in this forum to help new guys get used to the SDK. If i have some free time maybe ill write some articles for it ;)
  • BeigeAlertBeigeAlert Texas Join Date: 2013-08-08 Member: 186657Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, NS2 Map Tester, Reinforced - Diamond, Reinforced - Shadow, Subnautica Playtester, Pistachionauts
    This is DEFINITELY something that's needed. The documentation right now is scattered all over creation and/or just incomplete in some area. (ie. the wiki has no list of "special" layer/group names. To find those now, you just have to open up stock maps or do a billion forum searches.)
  • McGlaspieMcGlaspie www.team156.com Join Date: 2010-07-26 Member: 73044Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Squad Five Gold, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester
    edited October 2013
    Should this be done? Absofricknlutely. It will go a very long way to improving the life-span of NS2/Spark.

    Why should it be done? Simple: To lower the barrier for people to modify Spark and encourage larger mods to be developed.

    This needs to be kept as official as possible, having the resources scattered all over the place and not in "official" locations won't help.

    I'll volunteer some of my time to this. Having a cohesive and comprehensive, single location, to go for all the development questions for Spark is something that is seriously lacking. I think more people would be working on their own projects if this "problem" was solved.

    There is a sort of commitment that will come with starting something like this however. It will need to be updated and reviewed every time an update comes out.


    Long story short, I recommend using the official Wiki as much as possible. Also, this is NOT a project to be taken lightly. All told, this will be a LOT of work.
  • SamusDroidSamusDroid Colorado Join Date: 2013-05-13 Member: 185219Members, Forum Moderators, NS2 Developer, NS2 Playtester, Squad Five Gold, Subnautica Playtester, NS2 Community Developer, Pistachionauts
    edited October 2013
    There is api in the docs folder you can work off of, but for lua, I wouldn't bother documenting it as it's always changing. Stick to things that don't or haven't changed in a while.
  • McGlaspieMcGlaspie www.team156.com Join Date: 2010-07-26 Member: 73044Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Squad Five Gold, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester
    If this page isn't proof that this needs to be done, then I don't know what is.

    http://wiki.unknownworlds.com/ns2/Modding
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    That's some good positive feedback there. I'll keep you updated as to my progress. I will reveal an alpha version in the near future once I've got at least one major chunk of documentation done.

    As for the official ns2 wiki? I'd rather use a different solution because the colour scheme just doesn't seem conducive to learning. Also I'd have more control over something else.

    Thanks for the motivating comments guys, you'll be seeing lots of questions in the forums in the near future asking about stuff I'm not sure about.
  • McGlaspieMcGlaspie www.team156.com Join Date: 2010-07-26 Member: 73044Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Squad Five Gold, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester
    @Ironsoul Well, if you're determined to not update the official Wiki, then I strongly suggest whatever solution / hosting service you use be index-able (I.e. can easily be searched), and has good categorization / tagging features. Something else that's worth keeping in mind: Should you choose to host it somewhere your self, if your account or that host ever become disabled, lost, etc then all the work and useful community resource goes with it. Choose wisely. :)
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    edited October 2013
    I think what I will do is create a html/javascript book, similar to the python manual. That way I can upload a single file, people can download it to their flash drives, upload it to a web server, do whatever they want with it. It solves the "everything getting lost" issue and also the "have to be online" issue. I will see if I can create an online version too and will definitely keep the search engine indexing in mind. I'm not a pro at writing web pages but it should be simple enough.
  • AurOn2AurOn2 COOKIES! FREEDOM, AND BISCUITS! Australia Join Date: 2012-01-13 Member: 140224Members, Forum Moderators, NS2 Playtester, Forum staff
    You should also put it under the ns2 steam guides, so it's easier for people to access who don't actually glance at the modding forums.
  • McGlaspieMcGlaspie www.team156.com Join Date: 2010-07-26 Member: 73044Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Squad Five Gold, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester
    Hell, just doing it as a series of focused (specific subjects / sub-sections) on Steam would be enough. Not like you can even load a test game offline anyways...the more I think about it, the more I don't see the big usefulness of making some big offline guide.
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    That's not very professional though is it.
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    I just thought of something, maybe we could use GIT to build it. People could download a current usable copy as an end user.They would also update to the latest version this way.Contributers could make additions then merge it back in.
  • DarkOmenDarkOmen Join Date: 2002-11-05 Member: 7148Members
    Just wanted to chime in and say that I'm really looking forward to this. There are still some of us out there that just wish we had better documentation in order to make stuff. :D
  • McGlaspieMcGlaspie www.team156.com Join Date: 2010-07-26 Member: 73044Members, Super Administrators, Forum Admins, NS2 Developer, NS2 Playtester, Squad Five Blue, Squad Five Silver, Squad Five Gold, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester
    DarkOmen wrote: »
    Just wanted to chime in and say that I'm really looking forward to this. There are still some of us out there that just wish we had better documentation in order to make stuff. :D
    While I can understand this sentiment, I would not expect tutorials or step-by-step explanations. I used to feel the same way ages ago. I eventually just said screw it and started getting my hands dirty. In hind sight, it was the wiser choice. People need to understand Spark is NOT something like Unity or UTech. It's always a moving target, not a pre-planned, planned, and over-planned structure and/or release cycle like the Technology Providers of gaming. UWE is not in it for making money of technology, so their output is always going to have a "just make it work" flavor to it. Almost all games ever released (or software projects) have more or less a similar thing. Delivering a functional product always trumps releasing a polished one.

    From my experience, it's much more valuable to understand UWE's "functional / design goals" for a given chunk of code. Having inate knowledge of what XYZ functions are and their declarations won't get you very far. It's vastly more important to understand WHAT is being done, instead of HOW it's being done. This seems like I'm stating the obvious; however, in my experience (and from helping out others, in addition to my professional experience) far too many people expect documentation that is going to hold their hand, and guide them on a wonderful journey of learning. At the end of said journey, they'll have the know-how to make something. In reality, it's far more beneficial to jump in head first and start DOING. Yes, it will be frustrating, but in the end you'll have a much greater understanding and be able to make more of your ideas come to fruition.


    Anyways...I wasn't trying to give a finger wag or go into anything resembling rant-mode. I have the nagging suspicion that lots of people have a very similar sentiment like the one @DarkOmen expressed. Modding for NS2 is kind of hacking. Spark / NS2 doesn't have a clean-cut, laser sharp API that can be molded into anything. I cannot stress this enough, Spark is not Unity and never will be.

    Please, do not misunderstand me! I WANT hundreds, no, thousands more people crafting mind-blowing things for Spark & NS2. Truly.
    Hell, I'd love to see brand new non-NS2 games. Yes, that IS possible.

    In practice though, the only way that will really happen is if people dive in, and "just start modding".

  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue
    That's pretty much how it happened for me McGlaspie. There were no manuals, I wanted to mod, so off I went!!
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    edited October 2013
    Hello, thanks for the further comments. I'm not making fast progress on this but I am making some progress. The main thing I'm working on now is structure.

    @McGlaspie I feel the same way about documentation.

    There are three major goals of this documentation project. The first is to explain the concepts behind the spark engine. That one is difficult to explain but it's a safe bet that the stuff in the spark engine is coded to some sort of a pattern and I intend to convey that to the people reading the manual.

    The second goal is to describe all of the tools and what they do. People will be able to take that information and figure out how to do stuff with the tools if they know what everything is without fumbling around.

    The third and final goal is the closest you'll see to a tutorial in the manual: Best practices. Best practices isn't really best practices, but it's a good approximation, and will detail things like workflows, optimisation and specific little things on good/great ways of achieving certain things.

    An easy example is: Best practices for creating a level.

    As for current progress, I've decided to use wikidot as it's a simple and mostly free solution. I'll detail how people can contribute in the near future, but the basics of contribution: You must write an article and have it ready to go before I'll add you as an official contributor. That's to stop people from signing up and never doing anything.

    Addition:
    Oh and, the manual is targeted mostly at people with little experience in programming, level creation and modding in general. As those are the people who really need it. Anyone with modding experience from say, source engine or lua programming experience can figure out what's going on. But a complete beginner needs a platform to cling to. This manual intends to be that platform.
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    edited July 2015
    And I'm back. Been a while but I'm back. Here's the deal:

    - I'm using git, specifically GitHub to manage the project.
    - I'm using reStructuredText with Sphinx to build the documentation.
    - I'm creating a full Development handbook which will not only cover the tools but also the concepts necessary to make anything happen in the game.

    Because it's on GitHub as a public project, that means anyone can clone it, modify it and submit a pull request with their changes to be reviewed and brought in, a bit like a wiki only with a slight delay and a tiny bit of quality checking in there.

    I'm a little bit excited about this even though it's super late in the game. I hope that we can make this documentation successful and pull some of that development knowledge out of the more experienced modder/developer's heads (Looking at you @McGlaspie ).

    I'll update the main post eventually (when there's something really worth showing), but for the meantime here's a link to the current state of the Handbook, it's only a basic skeleton and is most definitely a work in progress with major structural changes open for discussion.

    (Unofficial) Natural Selection 2 Development Handbook HTML version

    I can also build pdf and epub and whatnot versions too because I'm using Sphinx.

    ====================================

    Okay that's awesome, but what if you want to help out? There are a few options:

    Directly Help Out:
    You can head over to the official GitHub page and do the whole git/github dance to clone the repository, make some changes and submit a pull request. If you need a little help setting this up, I'm definitely here to help out, just reply right in this thread or send me a pm.
    P.S. I'm still learning git/github myself so don't expect expert advice from me though.

    Indirectly Help Out:
    Join in the discussion right here in this thread. I am betting that there's still enough people with experience modding ns2 on these forums that they will see this and will gladly throw their opinions about the handbook my way. If you are such a person, please join in! Point out problems in the handbook like incorrect or missing information, spelling mistakes, ways things could be reworded.

    Point out suggestions for how the manual could be structured better (don't like how there's a bunch of topics and then all the manuals lumped together? say so!).

    ====================================

    Once again, I'm looking forward to see how this goes, I'll be the rock on the project pushing(or pulling) it forward a little bit every day, but it'll be up to the rest of you to throw information my way as I'm not experienced enough with NS2 development to make this happen quickly myself.

    Thanks for reading!
  • IronsoulIronsoul Join Date: 2011-03-12 Member: 86048Members
    I'm moving to google drive for the manual as it's less frustrating to build tables in. I may move back to sphinx or perhaps even mkdocs in the future but for now google drive. It provides a number of advantages:
    you get the updates literally as fast as I type them down.
    Anyone will be able to comment on the guide (I will put my trust in you to not abuse this feature).

    In order to give direction to the project, I am going to be making mods. One at a time.

    I'll have the google docs up in a while (no ETA, no more than a week) depending on my workload with other stuff.

    Thanks for reading!
Sign In or Register to comment.