Quick Links: Gideros Home | Download Gideros | Developer Guide
Gideros 2017.3.1 is OUT NOW!
  • totebototebo +1 -1 (+15 / -0 )
    This is the BEST GIDEROS RELEASE EVER. Get it here: http://giderosmobile.com/donate&download

    Here's what's new:


    • Add MovieClip:getFrame (#214)
    • No longer insert any plugin by default on Android. Be sure to activate the ones you need in Gideros Studio
    • UWP: Remove dependency to SQLite extension to ease deployment to windows phone


    • Make wrap on search default and saves find settings (fix #306)
    • Allow to disable encryption on a file by file basis

    Export system

    • Make APK default android export, and mark former one as deprecated
    • Add possibility to load generated APK to connected device
    • Do not ask store password if no key alias chosen in APK/Android
    • Pack all compiled and run files into a single one, fix use of macro across files
    • Encrypt all files types by default when encryption enabled


    Macro fixes and new "include" directive:
    Additional "include" directive can be used as include "filename" to load content of the file at the compilation step, for example:
    include "macro_functions"

    will try to open the file "macro_functions", load it's content and paste it at the place of include directive. Of course, any content of any file can be included this way, just like in C preprocessor.

    New max and min operators:
    Use <> for max and >< for min:
    a=b<>c -- make a = the larger of b or c
    a=b><c -- make a = the smaller of b or c

    New DEG and RAD operators:
    d=^>pi -- d will be set to 180
    a=^<180 -- a will be set to pi


    • HTML5 now comes with Ads and Facebook plugins for everyone
    • HTML5: eperimental port of lfs and lsqlite3 plugins
    • HTML5: all converted plugins are automatically inserted when selected in studio
    • Require: Add iOS export regulation stuff checkbox
    • Storekit: Add a currencyString to display the locale price.


    • Macros: Fix macro system resetting macro table for each file (macros are GLOBAL, baby!)
    • UWP: Fix various crash cases
    • Android: Fix app lifecycle events triggered when app not yet initialized
    • Ads plugin: Fix Admob integration
    • Media plugin: Fix orientation issue, and remove deprecated apis
    • Iab plugin: Update/Fix Helper
    • Graphics: Fix particle remove criteria
    • Win32: Enable stencil in OpenGL to fix Path2D rendering issues

    Now, let's USE this amazing tool to make GREAT GAMES!

    My Gideros games: www.totebo.com
  • totebototebo +1 -1 (+1 / -0 )
    ps. Works great on Mac! :)

    Likes: SinisterSoft

    My Gideros games: www.totebo.com
  • SinisterSoftSinisterSoft +1 -1
    The new operators will make your code be both smaller and faster, it will also make it harder for someone to reverse your code (as can be easily done with some other Lua based devkits).

    They won't be able to use off the shelf tools to make a lua program from the bytecode that is in your app (if they somehow figure out how to decrypt the data in the first place).
  • hgy29hgy29 +1 -1 (+4 / -0 )
    This new version also comes with support for a new Ads provider: Kiip

    Here's what Kiip can do for you:

    Powering Moments That Matter

    Kiip is a rewards based monetization platform that delivers rewards to users at moments of achievement. Kiip's latest product, Kiip Neon, is a comprehensive developer toolkit that introduces big consumer brands into your app as a way to monetize and engage your users. Kiip Neon delivers rewards based advertising that is respectful to your users. Beautifully-designed units, high quality creatives, customizable elements and a variety of reward formats allow for the ultimate user experience. Kiip’s unique model allows us to offer many exclusive services such as Premium Rewards, something unmatched by our competitors. We offer a variety of integration options that make Kiip Neon one of the easiest solutions on the market to work with.

    Key Features:

    Multiple formats:

    Unlock new inventory via moments
    Sponsored virtual currency
    Real rewards and coupons
    Native video
    In-feed rewards

    Superior user experience:

    Customizable reward notifications
    Designed for all screen sizes
    Ability to white label units

    Value-added services:

    Premium Rewards Sponsorships
    DIY Rewards: deliver your own rewards
    Survey Tool: learn more about your users
  • SinisterSoftSinisterSoft +1 -1 (+2 / -0 )
    One thing that is important to note:

    If you use 'require' to load in lua files at a specific point then be sure to right-click those files in the list and exclude them from execution.

    This didn't used to be important, but it really should have been done before and is important now. :)

    Likes: hgy29, pie

  • SinisterSoftSinisterSoft +1 -1 (+3 / -0 )
    Also now, regarding encryption, all files are encrypted if you tick the encrypted box (unless they HAVE to be plain (not encrypted) on the platform, eg mp3 for Android).

    To force a file not to be encrypted (if encryption is turned on) then right-click it in the list of files and force the encryption off.

    Sorry if this all sounds a bit cryptic! ;)

    Likes: hgy29, john26, pie

  • hgy29hgy29 +1 -1 (+3 / -0 )
    Here is a quick sample code to show you how to use kiip.
    You need to register for a Kiip account here beforehand: http://www.kiip.me
    require "ads"
    ads = Ads.new("kiip")
    ads:setKey("<secret key>") -- replace with your app's secret key
    ads:enableTesting() -- Required for test mode, remove this for production
    ads:addEventListener(Event.AD_DISPLAYED, function()
    print("ads AD_DISPLAYED")
    ads:addEventListener(Event.AD_RECEIVED, function()
    print("ads AD_RECEIVED")
    ads:addEventListener(Event.AD_FAILED, function(e)
    print("ads AD_FAILED", e.error)
    ads:addEventListener(Event.AD_ACTION_BEGIN, function()
    print("ads AD_ACTION_BEGIN")
    ads:addEventListener(Event.AD_ACTION_END, function()
    print("ads AD_ACTION_END")
    ads:addEventListener(Event.AD_DISMISSED, function()
    print("ads AD_DISMISSED")
    ads:addEventListener(Event.AD_ERROR, function(e)
    print("ads AD_ERROR", e.error)
    ads:addEventListener(Event.AD_REWARDED, function(e)
    print("ads AD_REWARDED",e.amount)
    local function onVideo(btn, event)
    if btn:hitTestPoint(event.x, event.y)then
    ads:showAd("interstitial") -- Use your kiip moment name here
    video = TextField.new(nil, "VIDEO")
    video:addEventListener(Event.MOUSE_DOWN, onVideo, video)
    video:setScale(5, 5)
    video:setPosition(10, 200)
  • keszegh +1 -1
    if someone wants anyway an android studio project then he can safely use the 'old' android export later too? or do you plan to remove that option altogether at some point?
  • antixantix +1 -1 (+1 / -0 )
    Just a note about exporting directly to device. On my Nexus 4 connected with USB2 cable it works. On my Pixel C connected with USB-C it does not work. So, your mileage may vary with this feature :)

    Likes: SinisterSoft

    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • MobAmuseMobAmuse +1 -1 (+2 / -0 )
    Great work guys! Will be hitting the donate button in the morning :D Thanks for fixing that sqlite bug in windows rt export too.
  • SinisterSoftSinisterSoft +1 -1 (+2 / -0 )
    @keszegh Just untick the build apk option to keep the files for loading into Android Studio.

    Likes: keszegh, saeys

  • MobAmuseMobAmuse +1 -1
    Any idea or example how to implement ads in HTML5 exported apps? and who provides the actual ads?
  • hgy29hgy29 +1 -1 (+2 / -0 )

    HTML5 ads are provided by Google (AdSense), and should work pretty much the same way as admob. Here is the init code:
    require "ads"
    ads = Ads.new("adsense")
    ads:setKey("<ad-client>","<ad-slot>") -- replace with your adsense ids
    ads:showAd("300x250") -- replace with the correct ad format or leave empty for default 300x250

  • mertocanmertocan +1 -1
    Does the luasocket work for HTML 5 ? @hgy29
  • hgy29hgy29 +1 -1
    @mertocan, yes but with a limitations:
    - udp won't work
    - tcp will be emulated through websockets
    - dns won't work

    so basically it is useful for WebSockets and Base64 encoding/decoding

  • SinisterSoftSinisterSoft +1 -1
    @mertocan my game (html5 export) talks to xtralife.cloud to store leaderboards, etc...
  • mertocanmertocan +1 -1
    I am getting error messages for local socket = require("socket.core") in socket.lua class. Is there a solution for it?
  • hgy29hgy29 +1 -1
    @mertocan, did you tick luasocket plugin in plugin selection page before export ?
  • hgy29hgy29 +1 -1 (+2 / -0 )
    About Kiip plugin, anyone looking for more information or support about Kiip can contact Justin by email: justin@kiip.me . Don't hesitate to contact him, he actually asked me to tell you that.
  • mertocanmertocan +1 -1
    @hgy29 yes, Luasocket plugin is included but in socket.lua class it is called as "socket.core" should it be "luasocket" or something? It is working on desktop player.
  • MobAmuseMobAmuse +1 -1 (+2 / -0 )
    Just tested this release of Gideros (windows export) with new Visual Studio 2017 and all works OK.

    Thanks again!
  • mertocanmertocan +1 -1
    Hi again @hgy29, I was able to add luasocket plugin. I think I have missed to copying required files to server. Anyway, Now application can include socket.core but I am not able to connect web socket. I have tested with javascript client and websocket server is working for sure. I am getting this error.

    WebSocket connection to 'ws://****:108/' failed: WebSocket is closed before the connection is established.

    And from the game (noobhub) : "Noobhub connection error: timeout"

  • totebototebo +1 -1 (+1 / -0 )
    I have a similar trouble connecting with websocket in a test app (works in JS but not Gideros > HTML5).

    Likes: mertocan

    My Gideros games: www.totebo.com
  • I got crash after closing my game on latest build:
    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    Build fingerprint: 'samsung/hero2ltexx/hero2lte:7.0/NRD90M/G935FXXU1DQB7:user/release-keys'
    Revision: '9'
    ABI: 'arm'
    pid: 21016, tid: 21053, name: GLThread 3192 >>> com.debia.associate2 <<<
    signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xdb7822b0
    r0 bb7822ac r1 f05829b4 r2 80000000 r3 07ffffff
    r4 ffffffff r5 ffffffff r6 ef9006c8 r7 00000003
    r8 00000000 r9 0000001c sl bb74e688 fp 00000002
    ip 0000001f sp e591f82c lr db7822a8 pc f0545112 cpsr 20030030
    #00 pc 00054112 /system/lib/libc.so (arena_run_reg_alloc+101)
    #01 pc 00054769 /system/lib/libc.so (je_arena_malloc_hard+76)
    #02 pc 0006306f /system/lib/libc.so (je_malloc+234)
    #03 pc 005a0800 /system/vendor/lib/egl/libGLES_mali.so (eglGetError+148)
    #04 pc 0000cf61 /system/lib/libEGL.so (eglGetError+20)
    #05 pc 0000dc87 /system/lib/libEGL.so (eglReleaseThread+2)
    #06 pc 000477cd /system/lib/libc.so (_Z21pthread_key_clean_allv+80)
    #07 pc 000474e7 /system/lib/libc.so (pthread_exit+36)
    #08 pc 00047425 /system/lib/libc.so (_ZL15__pthread_startPv+24)
    #09 pc 00019efd /system/lib/libc.so (__start_thread+6)
  • Any solution for Websocket issue?
  • totebototebo +1 -1 (+4 / -0 )
    The legendary @hgy29 has created a genius JavaScript bridge to allow WebSockets in Gideros. Without further ado:
    WebSocket = Core.class( Object )
    function WebSocket:init(uri)
    local loadJSEval =
    ]]) -- Init Websocket structure
    local js_eval_available = pcall( loadJSEval )
    self.wsid = JS.eval([[
    var connect = function(){
    var w = new WebSocket("]]..uri..[[");
    var wid=GiderosWebSocketId+1;
    var queue=[];
    var ws={ w:w, queue:queue };
    var data = "close"
    var data = "error"
    return wid;
    function WebSocket:send(data)
    JS.eval([[ GiderosWebSockets[]]..self.wsid..[[].w.send(']]..data..[[\n') ]])
    function WebSocket:receive()
    return JS.eval([[ GiderosWebSockets[]]..self.wsid..[[].queue.shift() ]])

    To be used like so:
    local ws=WebSocket.new("ws://xxx")
    My Gideros games: www.totebo.com
  • hgy29hgy29 +1 -1
    I get that you managed to make it work at last. :)
  • totebototebo +1 -1 (+1 / -0 )
    Yeah, this is magic. @mertocan, try it out!

    Likes: antix

    My Gideros games: www.totebo.com
  • keszegh +1 -1
    @totebo and others,
    when i install this release, my giderosandroidplayer.apk (and all the other players in fact) have still creation date 2017.01.08, and it is indeed v 2016.12.1 when i run it on my tablet. so it won't run magic code including <> and >< with which i flooded my code recently.
  • hgy29hgy29 +1 -1
    @keszegh, players are now located in Players subfolder, maybe you used one from a previous installation ?
  • keszegh +1 -1
    @hgy29, i see, thanks. should be good then. when gideros uninstalled the previous version it did not get rid of the players in the main directory, so i did not look for a new location for the players.
  • totebototebo +1 -1 (+1 / -0 )
    Fyi: I updated the Websocket class above, it now takes disconnects and errors into account.

    Likes: antix

    My Gideros games: www.totebo.com
  • SinisterSoftSinisterSoft +1 -1 (+2 / -0 )
    I just added Kiip to my game, it was really easy and fast. :)

    Likes: antix, MobAmuse

  • Anyone else having trouble downloading version 3.1? Ive tried for days, either the download doesn't start at all or it starts but times out after a short time
  • keszegh +1 -1 (+1 / -0 )
    great blog post btw.

    Likes: antix

  • Is there any good place to post crashes on current version?
    I have some in pretty simple application.
  • SinisterSoftSinisterSoft +1 -1
    @Creekmonkey, sometimes github is a pain for downloading from. I have better luck with a windows machine than a mac.
  • keszegh +1 -1
    i've noticed that in this new version the android player puts (and looks for) in a different folder for the projects. i think the simple to reach gideros folder was a much more convenient choice (to copy/edit/delete directly etc) than the current one hidden in Android/data/com.giderosmobile.android.player. would it be possible to change this back or was this necessary for some reason?
  • SinisterSoftSinisterSoft +1 -1
    I think it was because of restrictions android places for newer versions of the OS on where an apk can access files.
  • Hi folks,

    I've tried this version (Gideros 2017.3.1) but I've got a problem whereas I export my project to android studio.

    Files (buttons.lua, game.lua, and so on) don't appear when it is build encrypt (or not) but something strange happen... :-/ size of "main.lua.jet" is very closely to all files *.lua in gideros studio... so I don't know if all files encrypts are inside in "main.lua.jet"

    My app is successfully created in android studio but it did not open because haven't the files *.jet.lua (These files do not exist as I said before) in its right paths.

    Any suggestion thanks!
  • Thanks for your replay @hgy29
    I got it !! ;)
  • "response" I'm sorry @hgy29

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook Sign In with OpenID

In this Discussion

Top Posters