Menu

Android Game Engine / Blog: Recent posts

Status Update

You may notice not much posting; yet another period of extra work-related activity, plus a server failure (and replacement) at the home office. What Fun!

If you downloaded AGE and you're making something with it, please report in! A link, a screenshot, we will be pleased to post that here.

There are a few commits to put in before another release; the pipeline batching in particular can benefit everyone.

Posted by g-dollar 2015-05-14 Labels: status

Pipeline Batching

An important new feature is batch install is coming to the Install Pipeline.

This is incredibly handy during the startup/loading phase of the engine, where you are typically bombarding the Install Pipeline with GO install requests.

There are some problems with this, in particular the stress put on the Blocking Queue that transfers the messages, and the Update Lock that coordinates AGE with the GL thread.... read more

Posted by g-dollar 2015-01-15 Labels: status

R63 Released

We are pleased to announce R63 and updated AGEDemo are now in the Files area!

This release contains the ShaderBuilder, some fixes in GameplayFragment, and lots of new things for you to implement in GameHost. Don't despair! There is also new stuff in the HostSupport class to assist implementing these methods; some are simply a passthrough to HostSupport methods of the same name.... read more

Posted by g-dollar 2015-01-12 Labels: release

Demo Update et al

First off, we have our second AGE-based game on Google Play! This is a puzzle/strategy genre. You can see it here.

Now that we have two complete games built with AGE, it's time to go back and update the demo!

Changes are small; the auto-rotating camera is gone. Now you move the camera via UI gestures: pinch to zoom and fling to rotate the camera position. The camera rotation isn't perfect, but good enough to demonstrate how to respond to UI events.... read more

Posted by g-dollar 2015-01-06 Labels: status

Framerate Enhancement

One thing we noticed when cranking up the work-chunk size is this can delay receiving messages from the other tasks (threads), in particular the Framerate task.

Since we are running the surface view in demand mode, this is a matter of "asking" it to render more often, and let the GL thread deal with acquiring the update lock shared between the GameCycle task and the RenderService implementation. Recall that RenderService runs on the GL thread.... read more

Posted by g-dollar 2014-12-30 Labels: info

Preload et al

Happy Holidays to all!

We have been working on a way to pre-load GL resources, so you can avoid having start-up lag as the various textures and whatnots get demand-loaded.

This required some heavy re-work in the GLResource implementations, mainly so we could create an arbitrary number of GL resources while on the GL thread. This made synchronization easier too, since there is still only one sync operation, between the caller of ContextResourceLoader methods, and the GL thread.... read more

Posted by g-dollar 2014-12-27 Labels: status

Shader Builder

We are pleased to announce the upcoming shader builder, to easily create custom shaders in AGE. This is part of our ongoing campaign to shield you from actual GL details, and writing shaders certainly qualifies!

You can already provide custom shaders to AGE, but are responsible for the actual GLSL code and its correct syntax, etc. The new ShaderBuilder class takes away a great deal of that pain, and also handles much of the "bookkeeping" aspects of creating shaders, like making sure varying shows up in both vertex and fragment shaders, and inserting GLSL for standard uniforms and attributes in a simple way.... read more

Posted by g-dollar 2014-12-20 Labels: feature

R58 Released

We are pleased to announce R58 and Javadoc are uploaded to the Files area.

Posted by g-dollar 2014-12-16 Labels: announcement

Ball Basher 3D Released

Quietly working in the background of this whole project, was a game we were re-engineering to use OpenGL and shaders.

We are happy to report that this is now pushed to Google Play: Ball Basher 2.1

If you had visited this page previously, you would have found the previous incarnation, which was not based on AGE, but did use Box2D.... read more

Posted by g-dollar 2014-12-10 Labels: release

Timer Enhancement

We are working through the last bits of the Bashing Game, and this gave rise to another feature: timer cancellation.

Short story: you may be in a situation where you are doing other "stuff" while the timer is active, and now you're "done" but the timer is still running, and you still want the TimerCallback to occur.

In the current scheme, this is problematic; you must hold a reference to TimerService in order to call its cancel method. Since a major design goal is to not have to do that, we took care of it.... read more

Posted by g-dollar 2014-12-06 Labels: feature

Fix Release Coming

We found the (last) issue keeping everything from working properly when you are creating a new GameCycle subclass and attaching to an existing GL context. See Ticket #8 for details.

The easiest way to trigger this defect is to subclass the GameplayFragment and every game start after the initial one, renders a "blank" scene. Everything is actually working properly, except for the bookkeeping error (see Ticket #8) causes the rendering matrices to compute incorrectly.... read more

Posted by g-dollar 2014-12-03 Labels: status

Cross-fading Textures

Let's take a look inside the new features of R49!

One thing that is bread-and-butter gotta have is cross-fading between textures. You have some object, and it has to appear with more than one different texture, and of course you want a nice "transition" when that changes, don't you?

So to start, we need a component that knows how to interpolate [0..1] over a given time interval, and do some other necessary bookkeeping. Let's paste that right in:... read more

Posted by g-dollar 2014-11-25 Labels: info

R49 Released

It's finally here!

This version and matching Javadoc are in the Files area now. Many many enhancements, just read through the previous posts to see what's inside.

Posted by g-dollar 2014-11-24 Labels: announcement

Release is Coming

Still putting in some commits before we shove this next version out the door.

There was some fallout regarding Scene and some refactoring. There is a new interface for scenes called SceneRender that captures the render method that was just a public method of Scene, and new stuff for hooking the Scene to RenderContext; this got inverted out of RenderContext so we can have more control over things in other Scene subclasses, yet to be written. This made it all the way to SceneCompleteSentinel; anywhere it was Scene becomes SceneRender interface.... read more

Posted by g-dollar 2014-10-28 Labels: status

More Hooks

The title sums it up, there's almost no need to continue, lol.

First in Other News, we added some new screen shots from our proof-of-concept AGE game, Ball Basher 2. A demo is okay, but an actual game is better! This is where it all comes together: UV-mapped models exported from Blender, textures made in GIMP, physics by jbox2d, rendering and game logic by AGE, achievements and leaderboards by Google Play Games.... read more

Posted by g-dollar 2014-09-25 Labels: status

Status Back Baby

Extra points if you recognize the title of this post! Bonus extra points if pom-pom girls looked down their noses at you....

Let's just say we've been on extended leave, and now back here.

Things seem pretty dead around here, but rest assured, there were many uncommitted changes before the stoppage.

If you have been using textures, there is some lag during the initial texture load, because we accidentally included the bitmap resource loader code in the GL thread portion of texture create and reload sequences. That is fixed, but if you have been making your own GLResource implementations, you have some refactoring to do.... read more

Posted by g-dollar 2014-09-24 Labels: status

Status Update

The next update addresses some important issues we uncovered while trying to build an actual game with AGE, a box2d-based "bashing" game using 3d models for some "depth".

Game Over

Anyone tinkering around must be wondering how to get to the "end". This is still work-in-progress, but the main mechanism is a new event GameOverSentinel that "kicks off" the process of ending a game, i.e. setting the "game over" flag.... read more

Posted by g-dollar 2014-05-02 Labels: status

R43 Released

We are happy to announce R43 is uploaded to the Files area, with matching Javadoc.

Posted by g-dollar 2014-04-13 Labels: announcement

Using Project

One of the things everyone struggles with, is using the GL project() function. Part of the problem is the matrices required may not be part of the application's state, especially when not using shaders, which require them anyway to compute proper coordinates.

Why do we even care about these functions? Because a common task is figuring out the screen coordinates of an "interesting" point in model space, or figuring out where in model space a user input (tap) occurred. A specific example: display the points scored at the location where a collision occurs.... read more

Posted by g-dollar 2014-04-12

Upcoming Changes

The next release is coming, and we want to go over quickly the breaking changes. After all, it's still beta.

  • GL resource classes, e.g. Shader, Texture, are now in the resource package.
  • the Installer interface is renamed Pipelines to reflect its current role.
  • the LoadedCallback and UnloadedCallback signatures now include the Pipelines argument.

For those of you that are actually building something with AGE, apologies and get the copy-paste out.

Posted by g-dollar 2014-04-05 Labels: status

Happy Anniversary!

Today is the 1-year mark for AGE!

We've been under active development for most of the year, and we are working on lifting Beta status Very Soon Now. Just a few more tweaks.

Posted by g-dollar 2014-04-01 Labels: status

Status Update

Another release is coming right up!

We have added a new fragment shader for texture/texture blending, and the associated machinery to make it go. What this means is it's now easy to achieve effects like cross-fading between two textures on a DGO.

We also added an interface for Effect and modified DGO to accept Effect instance on LoadedCallback and make that the "temporary" shader in effect when rendering. Use UnloadedCallback to remove the effect and return to the current Material.... read more

Posted by g-dollar 2014-03-29 Labels: status

R28 is Here

We are happy to announce that R28 is up in the Files Area, along with matching Javadoc.

We have also gone through the Wiki Area, and made some minor updates to reflect current state.

Posted by g-dollar 2014-03-25 Labels: announcement

Next Release Immanent

Things are going pretty well now. One thing to remember is to invert your texture V coordinates when loading an OBJ, because bitmaps have their "V" origin at upper left, as opposed to lower-left. This is with the default (Blender) settings; you can do UV inversion in your modelling tool as well.

One thing we realized during this last set of commits, is that we are now pretty well insulated from any direct GL calls:... read more

Posted by g-dollar 2014-03-24 Labels: status

Screenshots

We finally have the AGE demo in good enough shape to provide some screen captures!

As you can see, we now have OBJ loader and texturing working. As always, the challenge is getting the texture coordinates mapped out properly! As you can see, some faces are "flipped" in the UV unwrapping process. Update: we have since added the necessary UV-inversion options to the OBJ loader!

The textured cube (1k) and torus (57k) are both exported from Blender with little or no processing. The texture is a Blender-generated test pattern (1024x1024). We're sure someone with actual skill can provide better content.... read more

Posted by g-dollar 2014-03-19
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.