orx SDK

Has anyone considered creating a SDK toolset for this little engine that could? Figured I'd test the waters for this idea before I committed any real code, would also make the learning curve for new developers way shorter.

Comments

  • edited April 2012
    Well it all depends on what you exactly mean by SDK, I suppose. :)

    But I'm all for making the life of newcomers easier, for sure!
  • edited April 2012
    Well so far I've only messed around with a simple little drag and drop positioning script/program for new objects that creates a handy c file and associated ini for nice and easy copy pasta purposes, instead of doing that by hand. I know it doesn't do too much, but I'm a work smarter kinda guy.
  • edited April 2012
    Iarwain is working on something called Scroll which is specifically made for C++. It looks pretty nifty. I don't know much about it, though, I've always been the type to do everything by hand. (and we used C, not C++, for our project.)
  • edited April 2012
    More details here and here (including a download link to a version that might or not compile with the latest svn). :)

    I still need to create a repo on bitbucket for Scroll itself, I'll try to do it sometime this week. It might be a good base for creating a SDK, beachbum, depending on your needs. :)
  • edited May 2012
    That definitely looks interesting, glad I learned about using Scrolls as a possibility before I really committed any code. But yeah, I'll definitely publish the little scripter program once I finish it, might not be alot, but could be helpful for some.
  • edited May 2012
    Any tools/additions/tutorials are always welcome!
    Don't hesitate to share things via the community part of the wiki, if you feel like it.
  • edited May 2012
    Will do, great thing about open source, but I def won't share code before I'm well done with it. Just feels too dirty.
  • edited May 2012
    Ahah, no worries. There's no obligations, of course, and it doesn't have to be code, I'm sure recommendations could be helpful to newcomers too.
    It's really hard for me to step back enough to know what's obvious from what isn't.
  • edited May 2012
    Oh ya, I enjoy a good side project though, and I plan to make a little something something if nothing for my sake of following up on the tutorials and actually remembering them :S. Which by the way Grey your tuts are pretty damned good.
  • edited May 2012
    Thankyeh ^_^ -- I've been meaning to write more, but seems there's always something to distract me these days haha
  • edited May 2012
    beachbum, an editor would be a welcome addition, so much that I would be interested in contributing to such a project (though I don't feel I'm qualified to lead such).

    Orx config is easy to learn, but it becomes difficult for me to maintain as it grows large. I've had some success organizing it by using multiple files and an easily searchable Hungarian notation, though.

    ainvar started an editor that showed a lot of promise (see this thread: https://forum.orx-project.org/discussion/2772&limit=20), but I don't know how much it is being developed now. Also, I don't know if it was intended to be cross-platform. Ideally, the Orx editor would be available on the different platforms Orx is.
  • edited May 2012
    Personally I'd love to see an editor made using orx itself, which means it could be used on any platform supported by orx.

    The issue with this approach is that there's no GUI widgets integrated in orx (yet?). :P
  • edited May 2012
    No, but I have basic ones (up/down buttons, push buttons) in my project. I do a lot of this in config:

    [O-Settings@O-MenuButton]
    Graphic = G-Settings
    Position = (20, 0, 0)
    Action = CreateObject # SetObjectAlpha # SetObjectAlpha
    Object = O-SettingsMenu # O-Planet # O-Info
    Value = 0.0 # 0.0 # 0.0

    And then iterate through and process the Actions as part of an input routine.

    (I'm interested to see how the upcoming Command module will influence this pattern, BTW).

    I guess there are some complex widgets, such as drop down boxes, that would take more effort. But a possibility would be for one to pull in part of one of the several existing widget libraries for the logic and use Orx as the renderer.
  • edited May 2012
    I'm actually kinda astonished that I made a program that looks and probably functions damned near like ainvar , kinda scary, but anyway, I'm currently only doing it in Visual Studio with c# as thats the only language I have any gui experience with, which really isn't alot. I thought about learning wxwidgets to a decent degree so I could just get going in c++ and have the whole cross platform thing going for it. Another thought I had on it would be to utilize html5/javascript canvas features for a general drag and drop web app which just wrote straight to a c file and ini and got packaged for general use. The only route I've taken so far is through visual studio, as I'm just slapping something together quick and easy for game dev purposes, but I'm more than welcome to suggestion and contribution.
  • edited May 2012
    Well if you like C# you're not necessarily limited to Windows only. You can use MonoDevelop (http://monodevelop.com/) to run on Linux and Mac OS X as well.
  • edited May 2012
    Yeah, I've been looking into that. But I know that porting over a GUI would be troublesome, unless Mono magically does that? Which I'm all for as little work as possible :lol: .

    Edit:It appears theres GTK for visual studio, which I was completely ignorant of. Huh, might just have something here after all.
  • edited May 2012
    If you were going to use Mono, I believe you'd want to use it on both Windows and Linux and develop the GUI in GTK#, which allows you to design once on both platforms.

    I could be completely wrong, though. I've never used it.. just ideas from the peanut gallery.
  • edited May 2012
    Actually I think as long as I integrate GTK into visual studio, which is something I've always wanted to do, I can easily just copy paste and compile on the other OSes.Thx for the handy tip acksys.
  • edited May 2012
    Glad I may have possibly helped :D

    I'd be very interested to look at anything you come up with.
  • edited May 2012
    Sounds good, but I'm just going to start from scratch again, this time with GTK, and anybody that knows some decent tips for general orx syntaxing, then by all means leave them here as I'm still learning that portion.
  • edited May 2012
    acksys wrote:
    No, but I have basic ones (up/down buttons, push buttons) in my project. I do a lot of this in config:

    [O-Settings@O-MenuButton]
    Graphic = G-Settings
    Position = (20, 0, 0)
    Action = CreateObject # SetObjectAlpha # SetObjectAlpha
    Object = O-SettingsMenu # O-Planet # O-Info
    Value = 0.0 # 0.0 # 0.0

    And then iterate through and process the Actions as part of an input routine.

    (I'm interested to see how the upcoming Command module will influence this pattern, BTW).

    I guess there are some complex widgets, such as drop down boxes, that would take more effort. But a possibility would be for one to pull in part of one of the several existing widget libraries for the logic and use Orx as the renderer.

    Sounds good. I'm more concerned with more complex widgets as you said, like tabs, tree views, drop downs, ...

    As far as I'm concerned, a good source of inspiration for a functional in-app gui is the one developped by Mikko Mononen in his Recast Navigation tool: scaled.php?server=193&filename=recast.jpg&res=landing

    You simply need SDL and you can compile and try the editor yourself.
  • edited May 2012
    Oh, and the best is that Recast Navigation's GUI is only one couple of files: ImGUI.cpp/.h. :)
  • edited May 2012
    beachbum wrote:
    Sounds good, but I'm just going to start from scratch again, this time with GTK, and anybody that knows some decent tips for general orx syntaxing, then by all means leave them here as I'm still learning that portion.

    Well, if I were you I wouldn't write directly config files myself. :)

    Instead I'd change the config values in memory using orxConfig_Set* functions and then dump everything to a file using orxConfig_Save. Hope this is helpful!

    Otherwise, if you have any questions about it, don't hesitate. I've also added a few functions in the config module for editor purposes (for Eyecreate's Pey editor, to be more precise), like manipulating the raw values or changing parenting and things like that.
  • edited May 2012
    So...Iarwain, I've been looking at mushroom stew, diggin the different .map files and multiple .ini files that make for a GREAT data structure overall, so I was wondering if you could give me the low down on how exactly you implemented that, as I'm going to try to implement that kind of data structure and general setup for the level editor/sdk output, and thanks in advance.
  • edited May 2012
    I'm not Iarwain obviously, but all the load/save functions relating to the maps are inside Scroll. I've ripped the version I've got out of my own project, and packaged it up for use -- it's got one tiny modification that just keeps it compatible with a fairly recent version of orx from the svn.

    (both the same, zip is just for easy of access if you don't have 7zip)
    [strike]http://grey.orx-project.org/Scroll.7z
    http://grey.orx-project.org/Scroll.zip[/strike]

    edit: get it from here:

    https://bitbucket.org/iarwain/scroll


    The functions you want to look at are 'ScrollBase::LoadMap' (line 375, ScrollBase.inl) and 'ScrollBase::SaveMap' (line 562, ScrollBase.inl)

    Good luck! :)
  • edited May 2012
    Hey thx, did not know that was scrolls specific, nice,thx for the links aswell,also to note is scrolls in c or c++ and would that have any compatibility issues with say the xcode/ios compiler or ndk?Thanks in advance yet again.
  • edited May 2012
    Hiya again, Scroll is a C++ wrapper around Orx's C functions, adding a lot of nice features (such as the above mentioned load/save maps) -- there shouldn't be any compatibility issues with anything as far as I know, but I have not tested this theory so your mileage may vary :)
  • edited May 2012
    alright kewl, so just call it like any other class/function, got it, was just covering bases and I didn't want to implement something that would later on be incompatible with the mobile c based compilers, and thx btw for the assistance. :cheer:

    edit: turns out both ndk and xcode support c++, if anybody was curious, i was oblivious to this fact, so scrolls ftw
  • edited August 2012
    Hey there,

    I'm a bit late to the party but I wanted to confirm that Scroll works on all the plaforms supported by orx and also that you can find the latest version here: https://bitbucket.org/orx/scroll
  • edited May 2012
    haha, you finally got the repo up, awesome :D
  • edited May 2012
    Yep, did that last week but there's still no docs there. :)
  • edited May 2012
    whoo, hey thx for upping that to bit bucket iarwain

    edit: holy sheet man, i just got into looking into the whole mushroom stew editor and I can't stop flailing my arms in excitement, im really glad you posted that earlier, just now have i had the time to look at it and i must say :woohoo: , anyway I wont fill this thread with my nonsensical drivel on the subject but I'm def gonna have to incorporate scroll in some fashion
  • edited May 2012
    Hey, glad you like it! :D

    Since Mushroom Stew, the major improvement is the addition of a catalog for the editor: instead of having to cycle through all the objects (that can become obviously very tedious), objects are now organized in categories in a catalog.
    And the registration is also much easier than it used to be: instead of a centralized list to fill an update anytime you add new objects, it's a simple config property to add to your object in config. Scroll will scan all the config sections after they're loaded in search of that specific property and will organize the objects in the catalog based on it.
    I also intend to soon add the rendering of the wireframe triangles of an object upon selection in the editor so that people can easily see the actual size of the objects when manipulating them.
    Any suggestion's welcome. :)
  • edited May 2012
    iarwain wrote:
    Yep, did that last week but there's still no docs there. :)

    I'm writing a basic tutorial now on how to add it to a project. Hopefully done by the end of weekend.
  • edited May 2012
    Quick question on scrolls for anybody willing to answer, is there a way to open specific levels/maps, or does it just auto load the first map given from the exe? Thanks in advance btw.

    edit:nvm, found out how,just disregard the above nonsense
  • edited May 2012
    Depends what you mean by opening a map. If it's in the editor (ScrollEd), you can specify it either in config or on the command line. If it's in game, you can call the Scroll::LoadMap() method.

    Woops, ok, didn't see your edit but I'll still post that reply in case someone else needs it later. :)
  • edited May 2012
    Hey good to know , I was just editing the batch file to run a different map, thx for the info.
  • edited May 2012
    So it was brought to my attention I've been coding more on an sdk than the reason I picked up orx, which was to make an awesome game. So not to be called a quitter, on my way through coding said game imna make some code templates and writeups for both my use and others. And eventually I'd like to get around to finishing the sdk I've already started but right now I've been distracted by too many shiny things. :S
  • edited May 2012
    I know the feeling! Orx started as a project for a specific game that never got achieved and 10 years later I'm still working on the engine and I have yet to make a full-fledged game with it (so far I only released 2 game jam entries).
    I might also have the attention span of a 2 years old which doesn't help I guess. :P
Sign In or Register to comment.