Quick Links: Download Gideros Studio | Gideros Documentation | Gideros community chat | DONATE
Gideros Labs - Page 2 — Gideros Forum

Gideros Labs

24567

Comments

  • @SinisterSoft you're right, version and change logs, great idea ;)

    Likes: SinisterSoft

    +1 -1 (+1 / -0 )Share on Facebook
  • From the wink I guess it's already on your to-do list... :)
    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
  • fxonefxone Member
    edited August 2013
  • As a part of making Gideros more stable and bug free, we are developing our own crash report system.

    So I've added an addition to Android project, which would report crashes to Gideros server.
    Soon to be available also for iOS.

    More information available here:
    http://giderosmobile.com/labs/gideros-reporting

    Likes: SinisterSoft

    +1 -1 (+1 / -0 )Share on Facebook
  • " allow premium developers access to crash reports of their apps, including Lua errors, so app developers could also identify problems and fix them easily in one place"

    "premium" <- Do you mean Indie or Pro (hopefully you mean Indie)...
    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
  • Does anybody has a pro license now? 100 000$ per year. It is about 8500$ per month for 12 months in a row. It should be great result.
  • ar2rsawseenar2rsawseen Maintainer
    edited December 2013
  • OZAppsOZApps Guru
    edited December 2013
    @unlying yes we have few :)
    WOW!!
    twitter: @ozapps | http://www.oz-apps.com | http://howto.oz-apps.com | http://reviewme.oz-apps.com
    Author of Learn Lua for iOS Game Development from Apress ( http://www.apress.com/9781430246626 )
    Cool Vizify Profile at https://www.vizify.com/oz-apps
  • Reporting integrated in new app. Did you recieve anything(you should)?
  • Yes yes we did ;)
    Let me create a web based crash report browsing ;)
  • Crash reporting is a curious feature. Why not just make plugins for some of the feature rich services that already exist like Crashlytics or New Relic? Bowerhaus' iOS plugin is around 60 lines of code and works quite well.
  • ar2rsawseenar2rsawseen Maintainer
    edited December 2013
    1) Crash reporting is mostly meant for our internal use, to find and fix bugs in Gideros, sharing it with developers is just a bonus
    2) Reporting some of our needed stuff like Gideros specific data or for example Lua errors is not so easy, @bowerandy basically hacked his way around and it seems it still has some problems
    3) Being tied to a specific service provider is always a risk, firstly there might be additional costs, and also platform dependency, when we introduce new platform which the service provider won't support, we would either have to split to different services or move to other service altogether.
    4) Handling our own data gives us flexibility to for example integrate it in internal bug tracker and lots of other fun stuff :)

    Based on these reasons we decided to try out and do it ourselves :)
  • Is this crash happens because of new crash report system?

    com.github.anrwatchdog.ANRError: Application Not Responding
    at java.lang.BootClassLoader.getInstance(ClassLoader.java:1011)
    at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:385)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:541)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at dalvik.system.DexFile.defineClass(Native Method)
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:207)
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:200)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.Class.getDeclaredMethods(Native Method)
    at java.lang.ClassCache.getDeclaredPublicMethods(ClassCache.java:153)
    at java.lang.ClassCache.getMethodsRecursive(ClassCache.java:216)
    at java.lang.ClassCache.findMethods(ClassCache.java:175)
    at java.lang.ClassCache.getMethods(ClassCache.java:167)
    at java.lang.Class.getMethod(Class.java:961)
    at com.giderosmobile.android.player.GiderosApplication.executeMethod(GiderosApplication.java:91)
    at com.giderosmobile.android.player.GiderosApplication.onCreate(GiderosApplication.java:296)
    at com.giderosmobile.android.sostavslovo2Activity.onCreate(sostavslovo2Activity.java:82)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    at dalvik.system.NativeStart.main(Native Method)
  • Yes, basically this is a way of reporting ANRs of the app
  • ar2rsawseenar2rsawseen Maintainer
    edited December 2013
    Added Controller support plugin, supporting different type of controllers
    http://giderosmobile.com/labs/controller

    More information:
    http://docs.giderosmobile.com/interface/controller

    What Controller Interface provides:
    • Using same interface across all supported Operating systems
    • Using same interface across all supported controllers
    • Support for multiple controller types on same market/device (As playing with Xbox or Moga controller on OUYA)
    • Easier additions of support for future controllers
    • Providing controller layer, which would easily allow you to combine gameplay with or without controllers in the same app
    • Controller layer would easily allow you to port your touch based interface (as menu buttons) to controller selectable buttons
    From now we will try adding in-app purchases to IAB interface, controller support to Controller interface, thus eliminating the separate plugin for OUYA, GameStick and alike platforms :)
    +1 -1 (+2 / -0 )Share on Facebook
  • Updated Controller interface, added support for IOS 7 MFI controller, ICade, IpadControl, Gametel, XPeriaPlay

    Likes: SinisterSoft

    +1 -1 (+1 / -0 )Share on Facebook
  • Uploaded Media plugin to the labs, allowing you to retrieve image from camera or from gallery, resize and copy them.

    http://giderosmobile.com/labs/media

    API Reference

    Methods

    • require "media" -- initialize plugin
    • media:isCameraAvailable() -- returns true is you can get picture from camera
    • media:takePicture() -- allow user to provide picture input from camera
    • media:getPicture() -- allow user to select picture from gallery
    • media:addToGallery(path) -- add picture from given path to gallery
    • media:resizeWidth(path, newWidth) -- resize image proportionally to new width
    • media:resizeHeight(path, newHeight) -- resize image proportionally to new height
    • media:resize(path, newWidth, newHeight, crop) -- resize image proportionally to new width and new height
      • if crop is true, maximal possible area of picture will be cropped to suit new dimensions
      • if crop is false, then image will be resized to maximum dimensions to fit in the provided rectangle
    • media:crop(path, x, y, width, height) -- crop with and height from x and y point from a given image
    • media:copy(source, destination) -- make a copy of the image

    Events

    • Event.MEDIA_RECEIVED --user selected image
      • e.path -- path to image
    • Event.MEDIA_CANCELED --user canceled media input
    +1 -1 (+9 / -0 )Share on Facebook
  • Wow. This is long-waited feature. Maybe option for saving-sharing screenshot will be added too?
  • @ar2rsawseen great plugin thanks. Maybe your next present to us will be google-map api : )

    Thanks again.
  • @ar2rsawseen I tried the media plug-in on our 'baseline' device (HTC Legend, which is Android 8). However, on either media:getPicture() or media:takePicture(), the gideros player app crashes with these errors:
    01-20 10:18:04.435: I/WindowManager(99): WIN DEATH: Window{45041b28 SurfaceView paused=false}
    01-20 10:18:04.435: I/ActivityManager(99): Process com.chainelsbv.androidplayer (pid 5549) has died.
    01-20 10:18:04.445: E/ActivityManager(99): fail to set top app changed!
    01-20 10:18:04.445: I/WindowManager(99): WIN DEATH: Window{4500ff70 com.chainelsbv.androidplayer/com.giderosmobile.android.CHAINelsActivity paused=false}
    What's happening? A call to media:isCameraAvailable() is working fine...
  • @Venorcis was there anything more? because from this I can't even tell if it was Java error or JNI error.

    But I will get an Android 2.2 and try it out (currently testing with 2.3 and it works)
  • ar2rsawseenar2rsawseen Maintainer
    edited January 2014
    Updated Media plugin, lots of changes, basically separated them in two classes and added functionalities, like taking screenshot, playing video files for cutscenes, getting/setting pixel values, etc
    • require "media" -- initialize plugin

    MediaManager class

    Methods

    • mediamanager:isCameraAvailable() -- returns true is you can get picture from camera
    • mediamanager:takePicture() -- allow user to provide picture input from camera
    • mediamanager:getPicture() -- allow user to select picture from gallery
    • mediamanager:takeScreenshot() -- capture the screenshot of the app
    • mediamanager:postPicture(path) -- add picture from given path to gallery (or open save file dialog on pc)
    • mediamanager:playVideo(path, force) -- play vieo file in given path (bool force to watch till the end, or quit playing on tap)

    Events

    • Event.MEDIA_RECEIVE --user selected image
      • e.path -- path to image
    • Event.MEDIA_CANCEL --user canceled media input
    • Event.VIDEO_COMPLETE --user completed watching video

    Media class

    • Media.new(path) -- create new Media object with provided image
    • Media:getPath() -- returns the path that was used to create object
    • Media:getWidth() -- returns the width of the image
    • Media:getHeight() -- returns the height of the image
    • Media:getPixel(x, y) -- returns r, g, b, a values of pixel at x,y coordinate
    • Media:setPixel(x, y, r, g, b, a) -- sets r, g, b, a values to pixel at x,y coordinate
    • Media:resizeWidth(path, newWidth) -- resize image proportionally to new width
    • Media:resizeHeight(path, newHeight) -- resize image proportionally to new height
    • Media:resize(path, newWidth, newHeight, crop) -- resize image proportionally to new width and new height
      • if crop is true, maximal possible area of picture will be cropped to suit new dimensions
      • if crop is false, then image will be resized to maximum dimensions to fit in the provided rectangle
    • Media:crop(path, x, y, width, height) -- crop with and height from x and y point from a given image
    • Media:copy(source, destination) -- make a copy of the image
    • Media:save() -- save the changes made to file
    What else guys do you think is needed?
  • keszeghkeszegh Member
    edited January 2014
    this looks quite interesting.

    -perhaps some way to import/export a whole folder? getDir()
    e.g. getPictureDir() would ask the player to navigate to a folder and then all the images in it would be sent back to the app (of course loading all of them is slow and not needed, a list of the locations would be enough); edit: once the folder is given it's easy to sweep it with lfs or something, as i remember. still, a getDir() function would be good which allows the player to navigate to a directory. this we could use also to store data in a place chosen by the user. simply in settings there could be a 'set custom directory for save games/data whatever' and then pressing the button would call this getDir()

    [-finally a Media:getPictureFromFile(location) to read all of these one-by-one would be handy. edit: Media.new(path) is exactly this as now i notice. right?]

    -mediamanager:postPicture(path) corresponds to sharing or it's different? if different, then a sharePicture() function would be also good.

    -also i don't see, can we make a Media too? i mean can we export to a file something made by rendertotexture?


  • also i think that's a bit of an extra, but i could use it well:

    -a function that converts a list of images into video (avi, mp4, whatever) with a given framerate.
  • - the getPicture() feature could be much more general, e.g.
    getFile("xyz") would open a file chooser where the user can select a file with extension "xyz" and the return value would be the path to this file. of course it won't look in the gallery but in the file structure. (assuming all os's have a native file chooser dialog, which i don't know, but would be logical).
  • It might be better to have it so it grabs/loads to a texture then have the resize commands added to the texture system (so you could then also resize textures). The same with play video - have it go direct to a texture location as it plays - you could then scale it, fly it around the screen, etc...
    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
Sign In or Register to comment.