Quick Links: Download Gideros Studio | Gideros Documentation | Gideros Development Center | Gideros community chat | DONATE
Just joined...Can I help? — Gideros Forum

Just joined...Can I help?

Evening folks,

My name is Bryan and I am a systems engineer by day, software developer and aspiring game/app developer by night in the US. No, I'm not a C++ guru lol, but I like C#, Java, and Python and I'm beginning to accept LUA :-)

I came to Gideros after searching the web to find a Corona replacement for some apps I had written back in 2013. I wasn't particularly liking the pricing model in regard to ad plugins of Corona nor the fact they fail to produce an IDE worth using - at least that I could find.

When I found Gideros and seen it was an open source project, I was immediately attracted to it, as I had been wanting to become part of a project in some way or at least to help. So I downloaded it and give it a whirl last night along with a few videos and I have to say, for open source I was impressed. The only thing it seemed lacking was a GUI suite which is one of the reasons I wanted to check it out. I was looking for something to replace Unity when it comes to Apps, Unity as great as it is, is heavy in this realm, so I needed an alternative. However, it doesn't seem that Gideros has any GUI system (I could be wrong..?).

My main development tools are Unity3D, Visual Studio, IntelliJ, and PyCharm. I have used Corona for some apps as well as mentioned. I want to extend my passion for apps, games, and education into an opensource project that is helpful to people and it also bodes well with my portfolio of things of course. Finally, as I said, I'm a systems engineer, so I have access to a lot of options when it comes to infrastructure (servers, virtualization, databases...ect.)

I would like to help this project in any way I can, thus my question - if there is any role I might play, I would like to be considered for it, whatever it might be. Now I will proceed to try and rewrite my apps in Gideros.

Also, another question, can someone point me in the direction of ad systems plugins for Gideros?

Thanks,
Bryan
+1 -1 (+4 / -0 )Share on Facebook

Comments

  • welcome,
    it's always good to 'see' new faces, gideros is indeed pretty cool.

    gui-wise there are two elaborate solutions,
    https://github.com/Nlcke/layout
    and
    http://giderosmobile.com/tools/widget-candy
    (this is non-free and does not seem to be maintained)

    and there is a recent discussion about adding some standard libraries:
    http://giderosmobile.com/forum/discussion/7416
    (in which you can give your opinion and also help doing it)

    about your question about ads, others will be able to help more than i could.

    Likes: antix, hgy29

    +1 -1 (+2 / -0 )Share on Facebook
  • Hi Bryan!

    For ads just right-click the project name>Plugins and select the ads plugin, you should then fill in the details.

    Then export the project to iOS or Android and send you your device.
    2018-08-28_20-23-21.png
    1395 x 879 - 196K

    Likes: oleg

    Coder, video game industry veteran (since the '80s, ❤'s assembler), arrested - never convicted hacker (in the '90s), dad of five, he/him (if that even matters!).
    https://deluxepixel.com
    +1 -1 (+1 / -0 )Share on Facebook
  • olegoleg Member
    edited August 2018
    @Just i use admob
    via admob can connect other ad networks


    require "ads"
    admob = Ads.new("admob")
    admob:setKey("ca-app-pub-43463456")
    admob:enableTesting(true) 
    admob:showAd("smart_banner","ca-app-pub-5656456")  --  interstitial
    admob:setAlignment("center", "bottom")
    image.png
    946 x 278 - 65K

    Likes: SinisterSoft

    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
    +1 -1 (+1 / -0 )Share on Facebook
  • @gbison Welcome :)

    I haven't used Layout by @n1cke but I do own Widget Candy. Widget Candy is pretty nice except the guy never replies to emails. For the price though it's 99% bug free and is more than enough to get you going and makes a good base if you want to tackle rolling your own :)
  • WoW! You guys rock, I swear I dont think I ever got forum responses so fast!! Fantastic!
  • @keszegh
    Thanks so much for that information, I appreciate it all. Ill be sure to chime in on that discussion, this API surely needs a GUI implementation. I think its paramount these days, because you have so many people jumping back and forth between apps and games. Right off the bat I would suggest a GUI implementation and some SQLite implementation.

    @SinisterSoft
    Awesome friend, thanks for that fine example! Im looking it over right now.

    @oleg
    Great tip! Thanks for that, I did not know - very helpful!

    @antix
    Hey is this the same Widget Candy I already have for Corona? I would assume so, I purchased this several years ago from this place.


    Can this be used in Gideros since its all LUA as well - probably not I assume?
    2018-08-28_16h44_28.png
    616 x 313 - 14K
  • antixantix Member
    edited August 2018
    @gbison Yes thats the same one. There should be a Gideros version whgich uses the Gideros specific things like Bitmaps and Textures available to download from his site :)

    Gideros Also already has SQLite support too ;)
  • piepie Member
    I am giving Layout a go in these days: it's really powerful once you understand how it works to keep things in a adaptable grid, a bit hard to master though from my point of view :)
  • Apollo14Apollo14 Member
    edited August 2018
    Hi @gbison ! ;)
    If you're new to Gideros, you may find some useful info in the recent roadmap:
    http://blog.giderosmobile.com/2018/08/newcomers-roadmap-from-where-to-start.html
    Finally, as I said, I'm a systems engineer, so I have access to a lot of options when it comes to infrastructure (servers, virtualization, databases...ect.)
    Currently Gideros is missing real-time multiplayer support. There's 'Noobhub' server (node.js), but its options are limited.
    It could be great to have Photon or Colyseus integration:
    https://www.photonengine.com/en-US/sdks
    http://colyseus.io/docs/client-overview/
    (though I don't know if stuff like that is part of your specialization)
    > Newcomers roadmap: from where to start learning Gideros
    "What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
    “The more you do coding stuff, the better you get at it.” - Aristotle (322 BC)
  • totebototebo Member
    edited August 2018
    Hi and welcome @gbison, fantastic to see new developers discover Gideros! I've released five games with it so far and, to me, Gideros is a perfect fit.

    I'm coding all the UI stuff by hand, and would also very much like to see a UI tool of some kind in Gideros. One of the few things missing. I tried the layout library, but couldn't fit it nicely into my workflow.

    Again, welcome! I hope you'll like Gideros, which is in constant development and pretty amazing.
    My Gideros games: www.totebo.com
  • Hi folks,

    Playing catch up today - hopefully, I can address everyone and certainly thank you for such a warm welcome into this community. I went straight to figuring out how I could control LUA in some form of object orientation. By the way, thank you to John Blackburn - an excellent instructor. I went headlong into understanding OOP with LUA, his work was detrimental in allowing me to quickly grasp that concept. In fact, his whole series is simply a requirement in my opinion.

    @Apollo14
    Thank you for all that information, it directed me to the video series from above and was all I needed to begin straight away. As for network integration, I am quite familiar with Photon in C#, specifically from Unity. I'll examine what may be the best way for this type of integration. Can Gideros use external libraries (*.dll)? I should also mention I have no knowledge of Apple products. I function entirely on Windows, Android, and Debian Linux platforms - so I would have no way to test anything specifically outside of that realm.

    @antix
    I figured as such after I began to see some of the Gideros specific nomenclature, I knew it wouldn't work. I also assume I would have to pay for it again, which I'm not interested in yet :-). I'm going to examine the other options that are available first and create myself a button class just to see how much of a pain it would be to create a small bag of elements to get me by on making some apps. I found the best way to learn the nuances of any platform is to build something with it. It seems experience is the mother of all teacher in that respect.

    @pie
    Thanks for the comment there, I plan on giving this a whirl at some point today. Hopefully, I can understand its implementation methodology. Thank you!

    @totebo
    Hi there, congrats on all those games! It's an awesome thing to see motivated developers create - even more so when they become successful! I am looking to Gideros to provide app development abilities. I spent many, many hours learning Unity for game development and it never lets me down (plus c# is my native language lol). So, I will more than likely continue making my games via that platform, so my focus in Gideros development will likely be with regard to apps and helping the community prosper :-)


    I'm going to spend some time with the project to see what thoughts come about during my trials with it. I'll take note of them and do some searching here on the forums and see if others have the same thoughts. From there, I'll try to figure out how I might help solve some of these or at least make things more inviting where they may present complications, unintuitiveness or simply non-verbose methods.

    Again, I'm no C++ developer, my hats off to those guys. I just don't have the patience for memory management at that level or anything else lol. I've only ever used LUA with Corona and that was in 2013 - so rusty is an understatement, but I'll get there fairly quick, I'm confident - especially with such a great community.

    Likes: Apollo14

    +1 -1 (+1 / -0 )Share on Facebook
  • antixantix Member
    edited August 2018
    @gbison I would say email the Widget Candy author and see if he will allow you to download the Gideros version, I don't see why not if you've already purchased it. Penalizing customers for changing engines wouldn't be a great business move really.

    There is a Gideros Button class that most people seem to end up using when they start out.. https://github.com/gideros/Button/blob/master/button.lua. It's okay but it is a Sprite with 2 bitmaps attached to it. If you start getting a lot of GUI elements on screen then this becomes kind of not good since you have a Sprite, and two Bitmaps for every GUI element.

    Unfortunately I can't share a more up to date button class because now all of my GUI elements cannot be utilized just by themselves, they are managed by a central GUI class.

    I do have a bunch of old GUI systems though and here is a small button class that I made a long time ago. When you look at it you will see it is very Widget Candy like. This class uses just one Bitmap (because it's an extension of the Bitmap class) and changes the texture instead of adding and removing bitmaps as the Gideros provided Sprite based one does.
    --[[
     
    name:   Button
    vers:   1.0.0
    desc:   An image button that has seperate images for up and down states
    auth:   by Cliff Earl, Antix Software
    date:   June 2016
     
    --]]
     
    Button = Core.class(Bitmap)
     
    function Button:init(upTexture, downTexture, options)
     
      local props = {
        name            = "Button",
        x               = 0,
        y               = 0,
        handleByCenter  = true,
        scale           = 1,
        alpha           = 1,
        rotation        = 0,
        enabled         = true,
        onPressed       = nil,
        onDragged       = nil,
        onReleased      = nil,
      }
     
      if options then
        for key, value in pairs(options) do
          props[key]= value
        end
      end
     
      self.props = props
     
      self.parent = self -- for when using as a standalone button
     
      self.enabled = props.enabled
      self.name = props.name
     
      self.upTexture = upTexture
      self.downTexture = downTexture
     
      self.focus = false
      self.id = -1
     
      if props.handleByCenter then self:setAnchorPoint(0.5, 0.5) end
     
      self:setPosition(props.x, props.y)
      self:setAlpha(props.alpha)
      self:setRotation(props.rotation)
     
      self:addEventListener(Event.TOUCHES_BEGIN, self.pressed, self) -- ADD EVENT HANDLERS
      self:addEventListener(Event.TOUCHES_MOVE, self.dragged, self)
      self:addEventListener(Event.TOUCHES_END, self.released, self)
    end
     
    function Button:dispose() -- Cleanup
      self.enabled = false
      self:removeEventListener(Event.TOUCHES_BEGIN, self.pressed, self) -- REMOVE EVENT HANDLERS
      self:removeEventListener(Event.TOUCHES_MOVE, self.dragged, self)
      self:removeEventListener(Event.TOUCHES_END, self.released, self)
      self.parent = nil
      self.enabled = nil
      self.focus = nil
      self.id = nil
    end
     
    function Button:enable(state) -- Enable / Disable
      self.enabled = state
    end
     
    function Button:pressed(e) -- Handle touch events
      if not self.parent.enabled or not self.enabled then return end
      if self:hitTestPoint(e.touch.x, e.touch.y) then
        e:stopPropagation()
        self.id = e.touch.id
        self.focus = true
        local props = self.props
        if self.downTexture then self:setTextureRegion(self.downTexture) end -- set down texture if it exists
        if props.onPressed then
          props.onPressed(self) -- perform action
        end
      end
    end
     
    function Button:dragged(e) -- handle move events
      if not self.parent.enabled or not self.enabled then return end
      if e.touch.id == self.id then
        self.focus = true
        e:stopPropagation()
        local props = self.props
        if props.onDragged then
          props.onDragged(self) -- perform action
        end
       end
    end
     
    function Button:released(e) -- handle touch end events
      if not self.parent.enabled or not self.enabled then return end
      local props = self.props
      self:setTextureRegion(self.upTexture) -- set up image
      if e.touch.id == self.id and self.focus and self:hitTestPoint(e.touch.x, e.touch.y) then
        e:stopPropagation()
        self.focus = false
        self.id = -1
        if props.onReleased then
          props.onReleased(self) -- perform action
        end
      end
    end
    Example use would be something like..
    local button = Button.new(
      Texture.new('button_u.png'), -- up image
      Texture.new('button_d.png'), -- down image (optional)
      {
        name = 'My Button',
        x = 32,
        y = 64,
        onPressed = function(b)
          print('button was pressed')
        end,
        onReleased = function(b)
          print('button was released')
        end,
      }
    )
    In theory you could use that as the base for all of your own GUI elements and it would be fine for small productions. Once your projects get a bit bigger though you would want a GUI manager to manage all of the event handling because 3 event handlers for every GUI element is inefficient (IMHO), especially when you get a couple of hundred elements on screen at once.

    In later incarnations of my GUI systems I've dropped the whole props table and just used self because there's no real need to have a table embedded in the element when it's not required.

    Anyhoo, hope that helps a little.

    Likes: gbison

    +1 -1 (+1 / -0 )Share on Facebook
  • if you want to check out specific gui elements, there is also ace-slide:
    http://appcodingeasy.com/Gideros-Mobile/Easy-input-for-choosing-packages-or-levels-in-Gideros-Mobile
    and many others (especially sliders) hidden in forum topics.

    Likes: gbison

    +1 -1 (+1 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    edited August 2018
    Hi @gbison,

    Many thanks for proposing your help, it is greatly appreciated!
    Gideros has a plugin system to extend it, which involves building binaries or providing native source code for each target platform:
    - .dll for windows (QT and win32 flavours)
    - .dylib for OSX
    - .so for android, eventually with java parts
    - .js for HTML5 (built from C/C++ source with emscripten)
    - .a or source code (C/C++/ObjC) for iOS/AppleTV

    All plugins entry point are in C linkage and take the form of a lua C binding
    int func(lua_State *L);
    I am not familiar enough with C#. Obviously you can build dll for windows, but what about other platforms ?

    Likes: SinisterSoft

    +1 -1 (+1 / -0 )Share on Facebook
  • gbisongbison Member
    edited August 2018
    @hgy29
    but what about other platforms ?
    This is why I indicated I may not be able to help at all, outside of LUA itself. I have spent quite a bit of time already looking into this between my own work. In fact, I had simple image placement running in a winform as a proof of concept before I went to bed last night, only to come to the realization that it was a window's only build and that simply wasn't fair. So, I began looking into other options in regard to Mac and Linux - Mac more specifically using .Net Core, but in the end, MonoDevelop appears to be the best choice for full cross-platform .NET

    I'm researching further to come up with solutions. I could potentially use Java, but its UI development aspects arent near as robust as .Net (in my opinion). Furthermore, .NET provides me with a canvas space I can use for easy containerized image manipulation and placement, although irrelevant if I cannot determine a cross-platform implementation. So, it looks like either Java or Mono are my options initially unless I wanted to do some web application based editing tool, which I'm not really fond of. Too many web apps these days, in my opinion, what happened to the good old days when we had to install a nice piece of software :-P

    @antix
    Thanks for that example button. Once I have a grasp on the inheritance factor Ill create a model and see what kind of engineering can be achieved. I did get imGUI up and running in .NET last night and was totally impressed!


    2018-08-30_12h06_10.png
    1920 x 1040 - 156K

    Likes: antix

    +1 -1 (+1 / -0 )Share on Facebook
  • olegoleg Member
    edited August 2018
    gbison said:




    @antix
    Thanks for that example button. Once I have a grasp on the inheritance factor Ill create a model and see what kind of engineering can be achieved. I did get imGUI up and running in .NET last night and was totally impressed!


    I made it more versatile,
    Draw a button with class slise9
    and add this picture to the class button

    http://giderosmobile.com/forum/discussion/7380/slice9-class/p1
    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
  • @oleg ?

    I think you wanted to tag @gbison ? :)

    Likes: oleg

    Coder, video game industry veteran (since the '80s, ❤'s assembler), arrested - never convicted hacker (in the '90s), dad of five, he/him (if that even matters!).
    https://deluxepixel.com
    +1 -1 (+1 / -0 )Share on Facebook
  • @hgy29

    Looks like its going to be Java for the Gideros community from me. That's the only way I can ensure things will work across the board.

    Any objections or issues that might present?
  • olegoleg Member

    @oleg ?

    I think you wanted to tag @gbison ? :)

    I am clicking the citation button
    I do not know why it marked you =)

    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
  • PaulRPaulR Member, Maintainer
    gbison said:

    Again, I'm no C++ developer, my hats off to those guys. I just don't have the patience for memory management at that level or anything else lol.

    Please don't be put off by C++, it's not the "C with classes" it used to be when it comes to memory management. It can be almost Pythonic (but with no invisible whitespace bugs) in places these days, and is much more like Java actually than raw C.

    If you can code in Java and C# then you should have no problems with modern C++.

    Likes: antix

    +1 -1 (+1 / -0 )Share on Facebook
  • Apollo14Apollo14 Member
    edited August 2018
    (sorry for offtopic)
    C++ is an insult to the human brain (c) :D

    @PaulR I've heard so many spooky stories about C++, that I've decided to take a look at C++ someday, it's really curious. :smile: Probably I will be horrified. Or maybe not :smile:
    > Newcomers roadmap: from where to start learning Gideros
    "What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
    “The more you do coding stuff, the better you get at it.” - Aristotle (322 BC)
  • PaulRPaulR Member, Maintainer
    gbison said:

    @hgy29

    Looks like its going to be Java for the Gideros community from me. That's the only way I can ensure things will work across the board.

    Any objections or issues that might present?

    I think it's fair to say that Java is not the right choice for adding features to Gideros, which is already a mature cross platform project. There would be so much work to do to interface or re-implement the Gideros SDK with Java that it wouldn't really be the best use of your time in the mid to long term, even if initial results seem promising.

    Java is used in Gideros on the Android side of things though so your experience could come in handy there.

  • PaulRPaulR Member, Maintainer
    @Apollo14 : Gideros uses Qt a lot in its build system, so that could be a good place to start if you want to check out C++! That way, you'll become more familiar with the tools that Gideros uses at the same time as learning C++. I really like their IDE, Qt Creator, which has great code completion and live warnings.

    Windows users who want to be compatible with Gideros should tick the MinGW box when installing Qt (I use the installer options for Qt version 5.9.1 with MinGW 5.3).

    Likes: Apollo14

    +1 -1 (+1 / -0 )Share on Facebook
  • @PaulR
    Thanks for the insight, much appreciated to be sure. That said, my suggestion for Java was merely for external tools, such as a placement editor or GUI builder, not to actually modify or create within the API itself. I believe it might be possible for significant development where JSON is the mediator between LUA and Java. Although, this will still require a code base to be built within Lua itself for proper communication, which again, should be an entertaining project. I do believe I have seen where Gideros already has the ability to serialize and deserialize JSON.

    I need to have a look at the C++ code base and get to know it a bit in regard to your suggestion, I just usually never had the patience to deal with it so I never look.

    As for QT, I have actually been messing about with it in Python using QT for Python (aka PySide2). So I have some experience with QT. The code base is something I can learn over time, but mostly I'm looking at ways to improve the tool base and workflow of Gideros now, or at least these are my interests. I find UX/UI development to be an extremely interesting topic.

    One of my reasons for wanting to get involved in a community like this is to evolve my skill set beyond the normal convention (at least for me). I can say I am achieving that already :-) .

    Likes: totebo

    +1 -1 (+1 / -0 )Share on Facebook
  • Apollo14Apollo14 Member
    edited September 2018
    gbison said:

    I believe it might be possible for significant development where JSON is the mediator between LUA and Java. Although, this will still require a code base to be built within Lua itself for proper communication, which again, should be an entertaining project. I do believe I have seen where Gideros already has the ability to serialize and deserialize JSON.

    Gideros does support json. Quick example:
    require('json')

    local loader = UrlLoader.new("http://ip-api.com/json")

    loader:addEventListener(Event.COMPLETE, function(event)

    local receivedTable=json.decode(event.data)
    print(receivedTable.countryCode)

    end)
    (I couldn't wrap it in in 'code' tag, cause url gets broken by forum engine)

    Likes: gbison

    > Newcomers roadmap: from where to start learning Gideros
    "What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
    “The more you do coding stuff, the better you get at it.” - Aristotle (322 BC)
    +1 -1 (+1 / -0 )Share on Facebook
  • @Apollo14
    Gotta love JSON! :-)

    Likes: Apollo14, totebo

    +1 -1 (+2 / -0 )Share on Facebook
Sign In or Register to comment.