Quick Links: Gideros Home | Download Gideros | Developer Guide
Gideros 2016.10 released!
  • john26john26 +1 -1 (+16 / -0 )
    We are pleased to announce the release of Gideros 2016.10. This release has been a little delayed due to extensive testing and rebuilding needed but as you can see there are many changes and many new APIs which we hope will be useful. Here are the changes and additions we have made:

    Box2D particle contact events:

    Box2D ParticleSystem methods:
    • destroyParticles
    • getParticleCount
    • getParticleGroupList
    • containsParticle

    Viewport:lookAt(eyex, eyey, eyez, targetx, targety, targetz, upx, upy, upz) -- set up the transform matrix of this viewport taking eye and target positions and up direction as arguments

    JS.eval(code) -- execute arbitrary Javascript code on HTML5 platform

    Mesh.clearTexture([slot=0]) -- clear texture


    Particles methods:
    • setParticleTag(i, tag) -- set the tag associated to the given particle
    • getParticleTag(i) -- returns the tag associated to the given particle
    • setPaused(isPaused) -- pause or resume this particle system
    • isPaused() -- returns wether this particle system is paused or not
    • getParticles([set, tag]) -- retrieve particles states of this system

    Sprite methods:
    • setSkewX(kx), getSkewX(), setSkewY(ky), getSkewY(), setSkew(kx, ky), getSkew() -- new skew (aka "shear") transformation effect, kx and ky are numbers in -90..+90 degrees range
    • getAnchorPoint(), setAnchorPoint(ax, ay) -- to relatively set Sprite center position
    • getClip() --> x, y, w, h
    • Sprite:getWidth(true), Sprite:getHeight(true) -- to get sprite width and height without transformations
    • Sprite.setBlendMode(src, dst) -- support of blend functions:

    application:setKeyboardVisibility(visible) -- Android and iOS support native soft keyboard, returns true if platform has soft keyboard

    Plugin (ads): Unity framework and gplugin script (Unity only)

    Pixel methods allow to replace Bitmap class and more:
    • new(texture, [width = texture width], [height = texture height], [tsx = 1], [tsy = 1], [tx = 0], [ty = 0]) -- additional constructor to create Pixel with texture
    • setTexture([texture], [slot], [matrix]) -- set texture and apply matrix to that texture
    • setTextureMatrix(matrix) -- to apply matrix to it's texture
    • setTexturePosition(x, y)
    • getTexturePosition() --> x, y
    • setTextureScale(sx, sy)
    • getTextureScale() --> sx, sy
    • getDimensions() --> width, height
    • setColor(c1, a1, c2, a2, [angle]) --> set linear gradient with 2 color-alpha pairs and optional angle
    • setColor(c1, a1, c2, a2, c3, a3, c4, a4) --> set gradient with 4 color-alpha pairs (1 pair per vertex)

    + new camera format detection for Android Camera plugin

    + loading errors checking on GLSL shader creation

    + Mesh.setTexture(texture, [slot=0]) -- to set additional texture for shaders

    + Shader.TIMER constant to allow passing os.timer() value to shaders without lua intervention

    + Path2D:setSvgPath(...) accepts multiple string/number arguments and concatenates them into one string

    + ads plugin: updatedadmob SDK and APIs, interstitial support preload and refresh when closed and fixed setAlignment issue.

    + improved plugin export commands

    + Mesh.getIndex correctly checks for maximum number of indexes

    + events are not dispatched to garbage collected object

    + updated APK export for splash screen disable/bgcolor

    + correct path to 'All plugins' folder (Fix plugins not applied on Mac)

    + Sound.setListenerPosition fix

    + UrlLoader: PUT and POST correctly implemented

    + Gideros Studio: fixed sendFile check to print correct status

    + Fixed timer and particles running while app is suspended

    + gdrexport: fixed filedownloader

    + particles compile on WinRT

    + timer resuming after suspend

    + Mesh with empty arrays on WinRT doesn't crash

    + fixed logcat overflowing and crashing

    + every TextField (with bitmap, cached and uncached fonts) has correct behavior: cached TextField is not blurred at window resize and uncached TextField respects logical scale

    + fixed sample parameter behavior for all TextFields

    + Path2D could crash app

    "Graphics/MapClown" added
    "Audio/Moving sound" added
    "3D Horse" updated: lighting added
    "Hardware/Keyboard" updated: soft keyboard support added

    We hope you enjoy Gideros 2016.10 and look forward to getting your comments here on the forum!

    Download Gideros 2016.10
  • simwhisimwhi +1 -1 (+2 / -0 )
    Wow!! That's a lot of new features / fixes. Well done guys.

    Likes: n1cke, hgy29

  • keszegh +1 -1 (+3 / -0 )
    html export seems to work, great.
    i like the clown examples a lot.
    btw they should be next to each other (now bird anim 3d is inbetween two of them).
  • pie +1 -1 (+2 / -0 )
    That's great!

    Do you think it's better to use textured Pixel in place of Bitmap?

    Thank you heaps

    Likes: n1cke, hgy29

  • n1cken1cke +1 -1 (+1 / -0 )
    @pie: textured Pixel is better because it's texture will be fitted automatically into it's dimensions (Letterbox mode). This way you don't need to think about texture size. Pixel is also useful for textures in Texture.REPEAT wrap mode: you can adjust texture scale and texture position or use them for background scrolling/zooming effects. Another good thing is each textured Pixel can have it's own color mask with Pixel:setColor method.

    Likes: pie

  • MobAmuseMobAmuse +1 -1 (+5 / -0 )
    Yes loving the pixel stuff and will be using it on my next game app after playing with it a bit recently :)

    Good work guys!

  • john26john26 +1 -1
    Thanks very much for your donation, @MobAmuse. And thanks to everyone else who has donated recently! Your generous contributions keep the whole show on the road!
  • There is something wrong with Particles. Can you check particle Clown example. Dots are getting too big.

    BTW. Perfect job!
  • pie +1 -1 (+1 / -0 )
    Does this mean that Bitmap has become "obsolete"? :)
    I mean, can you think of some scenario where Pixel could not replace Bitmap?

    My first test with html5 export shows that it's running at 60 fps instead of 30 (as project settings)
    win32 export has the same behaviour (60 fps instead of 30, additional parameters to win32.exe have no effect)
    Everything is fine on "players" windows and android (30 fps as expected)

    On previous release I already had issues on fps, but on my laptop it was following the project setting , nothing changed on the fps count on the other laptop mentioned here: 1200 fps :)

    I also have another issue on win32, the game crashes if I try to draw a Path2d object

    However I love the new features, thank you! :)

    Likes: antix

  • @mertocan, i also have seen the same, after a while the particles 'blow up' in the particle clown example. this may be a bug indeed.
  • @keszegh yes, Maybe there is a fix for this. Because, StarField example works well.
  • keszegh & mertocan: I coded those demos a couple of versions ago. I'll revisit them and see what's up. Glad you like the clown stuff though - I tried to keep them short so they don't get to complicated.
  • I think it is not about your code. I am also using particle in my game. It is also the same. Something is wrong about it. Actually, thats why I checked Particle samples. Thanks.
  • Export html5 is working correctly, I love you all! :)
  • So yes, is Bitmap now obsolete? If pixels are faster I would begin converting all of my Bitmap based classes to Pixels.

    However, I'm still on 2016.6 because I have no indication if newer versions are ready for production code and I don't want to release a product that has bugs (ones that aren't of my own making anyway).
    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • n1cken1cke +1 -1 (+2 / -0 )
    @antix: textured Pixel has same speed as Bitmap. Bitmap has little different behavior and supports TextureRegions so we cannot make it obsolete.

    Likes: antix, pie

  • @n1cke thanks. I'll stick with trusty old Bitmap for now then since I use TextureRegions extensively. The new features of Pixel are very cool and I will get to try them sometime I hope.
    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • i guess pixel is more like a squared mesh.
  • @mertocan, I think that now the particles are scaled correctly, but before they may not have been.
  • When I do a clean export with the ads plugin included there are no dependencies in my gradle file. Which version do I need to add for admob?
  • @SinisterSoft So, How can I fix the clown particle sample?
  • hgy29hgy29 +1 -1
    Hi @simwhi,

    Ads plugin should be integrated into your android studio project, but Admob will not, you have to add admod manually as before. Currently, only UnityAds can be integrated automatically
  • Hi @hgy29

    The release notes refer to updated Admob SDK and APIs. Which version of Admob do I need to add as a dependency?
  • The original Pixel class was very good. The new one (whilst fantastic) seems to be totally different. The old syntax to create a new pixel was...
    Pixel.new([color, alpha, width, height])

    But the new syntax is...
    Pixel.new(texture [, width, height, texture_scale_x, texture_scale_y, texture_x, texture_y])

    Is it even possible to make the old style pixel now? Or are we forced to add textures and stuff now?

    I ask because I'm making extensive use of the Pixel class in my new game. If you look at the screen shot you can see the radar, which uses a lot of Pixels. So I am wondering if I upgrade to the latest Gideros will I have to re code a whole heap of stuff?
    960 x 640 - 174K
    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • SinisterSoftSinisterSoft +1 -1 (+1 / -0 )
    The existing one will still work, just use 1 to 4 parameters (I think!)....

    Likes: antix

  • Your radar btw would be better off using Particles...
  • @SinisterSoft why Particles over Pixels? or is that in its self a stupid question? ;)
    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • Particles are MUCH, MUCH faster... have one particle sprite and add everything to it.

    btw, here is the fixed clown particles demo, this time with square particles...
    (just replace the code in the demo)
    local clown=Bitmap.new(Texture.new("clown.png"))
    local w,h=clown:getWidth(),clown:getHeight()
    local render=RenderTarget.new(w,h)
    local particlesClown=Particles.new()
    local p
    for y=0,h-1 do
    for x=0,w-1 do
    local c,a=render:getPixel(x,y)
    if a>0 then
    local count=0
    local pos=0
    function gameLoop(e)
    if count>300 then
    if pos<=p then
  • antixantix +1 -1 (+1 / -0 )
    @SinisterSoft, okay "MUCH MUCH Faster" explains it. I'll revamp some code then :)

    Likes: SinisterSoft

    Check out my DevBlog, my GitHub, and my games Falling Animals | Breaky Wall | Exetor
  • @SinisterSoft, @john26
    There are still some issues on Particle.

    I runned this code about 20 times. Sometimes, Particles are not added to stage or added to wrong places. Can you also try it?

    ParticleFactory Class
    ParticleFactory = Core.class(Sprite)
    function ParticleFactory:init(config)
    self.conf = {
    autoStart = true,
    width = 7,
    height = 7,
    density = 100,
    texture = "Assets/Images/rating.png",
    particleColor = 0xAAAA00,
    alphaSpeed = 0.03,
    sizeSpeed = 0.03,
    sizeMin = 10,
    sizeMax = 19,
    rotationMin = 5 ,
    rotationMax = 10,
    speedMin = 10,
    speedMax = 200
    if config then
    for key,value in pairs(config) do
    self.conf[key]= value
    self.count = self.conf.density * self.conf.height * self.conf.width * 0.002
    self.started = false
    if self.conf.autoStart == true then
    function ParticleFactory:createParticles()
    self.particles = Particles.new()
    local p
    for y=0,self.count do
    local angle = math.random()*math.pi*2;
    local length = math.random();
    local xPos = math.cos(angle) * (self.conf.width/2) *length
    local yPos = math.sin(angle) * (self.conf.height/2) *length
    --Todo speed config
    p= self.particles:addParticles(xPos,yPos,math.random(self.conf.sizeMin*10,self.conf.sizeMax*10) / 10)
    local speedX = (math.random(self.conf.speedMin,self.conf.speedMax) / 100) * (xPos/ math.abs(xPos))
    local speedY = (math.random(self.conf.speedMin,self.conf.speedMax) / 100) * (yPos/ math.abs(yPos))
    self.particles:setParticleSpeed(p,speedX,speedY, math.random(self.conf.rotationMin,self.conf.rotationMax) / 10)
    function ParticleFactory:start()
    self.started = true
    function ParticleFactory:onEnterFrame(e)
    local canRemove = true
    for y=1,self.count+1 do
    local color,alpha = self.particles:getParticleColor(y)
    alpha= alpha - (self.conf.alphaSpeed * e.deltaTime * 60)
    if alpha > 0 then
    if canRemove then
    self = nil
    function ParticleFactory:getWidth()
    return self.conf.width
    function ParticleFactory:getHeight()
    return self.conf.height

    local conf = {width=400,height=1,density = 300,sizeMin=13,sizeMax= 24,alphaSpeed=0.02,speedMax=65}
    local fac = ParticleFactory.new(conf)

  • + ads plugin: updatedadmob SDK and APIs, interstitial support preload and refresh when closed and fixed setAlignment issue.

    I'm having problems with interstitial ads for admob. What has changed exactly? My code used to work fine before.

    I already use ad:loadAd(adType)

    Is this still pre-load?
  • @mertocan can you zip up a project with the assets and send me a link, I'll take a look.

    Also, alpha decay can be done now by the particle system - no need to do it in your enterframe loop.

    Not too sure on the max no of particles for one particle sprite either. @hgy29 will know.
  • simwhi said:

    + ads plugin: updatedadmob SDK and APIs, interstitial support preload and refresh when closed and fixed setAlignment issue.

    I'm having problems with interstitial ads for admob. What has changed exactly? My code used to work fine before.

    I already use ad:loadAd(adType)

    Is this still pre-load?

    Yes, call ad:loadAd(adType) to preload an ad, then you call ad:showAd(adType) to display it. It would refresh the ads automatically when closed.

  • hgy29hgy29 +1 -1 (+1 / -0 )
    Max particle count for a single Particle Sprite is 16k

    Likes: SinisterSoft

  • Example could not open from the studio main window.
    Starts Gideros player button not work.
  • @SinisterSoft here is the zip. How can I use Alpha decay? It is not documented.
  • Great job.

    Donated ;)
  • Nice! Thanks. @hgy29

    I have updated the code but still It doesnt work in some builds. I tested 10-20 times. Sometimes, particles are not created and sometimes they are located in wrong.
  • I'll take a look tonight, it may be a gfx card issue - does it happen on Android too?
  • All path relative features do not work in gideros studio
    like open example, open help->api reference, open player, select plugins.
    Could not open the project file: ../../Examples/Graphics/Button/Button.gproj
  • @SinisterSoft I didnt try on android. I have tested on iPhone and Mac both had same issue.
  • hgy29hgy29 +1 -1
    @Xman and others,
    We are investigating this Mac issue, looks like it could be some Sierra restriction since fresh installs on El Capitan seem to work properly. However I switched to Sierra and did a fresh reinstall of Gideros and it still works on my Mac. OTOH I use my Mac to build Gideros so I may have some specific configuration. Could it be some new security feature brought by Sierra ?
  • Will this clue help?
    launch the gideros studio from Contents/macOS/Gideros Studio, it seems all works fine.

    I also installed on my older MacBook Pro with 10.12.1, the gideros studio could not be opened at all.
  • john26john26 +1 -1
    It seems that Sierra has a different opinion of what constitutes the current working directory (CWD) compared to previous versions of OS X.

    On my computer, Gideros is installed at
    /Applications/Gideros Studio/Gideros Studio.app/Contents

    (with subdirectories under this including MacOS which contains the actual executable).

    Previously OSX would take the above directory to be the CWD so, the path
    ../../Examples/Graphics/Bird Animation/Bird Animation.gproj

    would find the correct file.

    But now it looks like the CWD is taken to be somewhere else. If so this is going to break hundreds of programs not just Gideros and it's a simple Apple bug which they will no doubt fix. (I can't believe this is a 'feature'!)

    I also found this website which lists numerous bugs in Sierra:


    I think this section might be relevant:
    “The application ‘name’ can’t be opened” or Error -41

    Unfortunately the solution is to reinstall Sierra!

    Note that this problem only occurs in Sierra not in previous versions of OSX. However, @hgy29 has installed Sierra without encountering the problem. I have not upgraded from El Capitan yet as I am afraid such a buggy release of OSX will break the build system. I'd rather wait till things stabilise before upgrading.
  • Has something changed in the build environment?

    The previous release can work just well on Seirra.
  • I built a release on a Sierra Mac just now, and it could run without this issue.

    @hay29, no specific configuration required for Sierra to run it . I built it on one Mac and install it on another fresh Mac, both with Sierra, all works well.
  • Hi all, I've found an issue with the facebook plug-in for Android:

    libFacebook.so should be libfacebook.so (all lowercase)

    PS - I also turned off Instant Run in the latest version of Android Studio (v2.2.2).
  • hgy29hgy29 +1 -1
    Or is it the
    that is incorrect ?
  • @hgy29 I changed the libface.so file only. System.loadLibrary("facebook"); is alll lowercase too.
  • NatWobbleNatWobble +1 -1 (+1 / -0 )
    Some changes have been made to the Admob dependencies for iOS according to the release notes, and will affect users of the latest version (7.12.1):

    7.11.0 2016‑09‑15
    Removed dependencies on CoreBlueooth, EventKit, and EventKitUI frameworks.

    7.9.0 2016‑07‑13
    Added GLKit, OpenGLES, CoreMotion and CoreVideo framework dependencies to improve and enhance ad rendering and quality.

    7.7.0 2016‑02‑24
    Added a dependency on the MediaPlayer framework.

    So the docs at http://docs.giderosmobile.com/interface/ads are slightly out of date.

    Likes: SinisterSoft

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