Announcing “Heroes Of Honesty”

For several months I have been developing a new game called “Heroes Of Honesty”.

It is a 3D Android RPG game with a possible build for the PC.

The game plays like a classic RPG with tactical battles. The name of the game is meaningful to the story.

Once the game is complete, I will be releasing a series of articles about how I improved the game’s performance for the Android.

I am not going to reveal too many details about the game before the date of release.

If you are curious about the game you can subscribe to the newsletter list, follow me on twitter or subscribe to the RSS feeds.

The game’s website is http://www.PompiPompi.net/

A Work In Progress screenshot that will give you a glimpse of the game:

Work In Progress

GLES 2 and unsigned byte attribute (ivec4?)

I was trying to have a VBO with bone indices in my Android GLES2 3D game.

The issue is that most of the vertex buffer contains float while the indices only require unsigned bytes.

At first I was just using floats as indices for the bones but I wanted to do better. So I made a vertex buffer that have both floats and unsigned chars.

In order to tell GLES2.0 you want 4 indices of unsigned chars you need to call:

GLES20.glVertexAttribPointer(
Shader.INDICES_POS,
4,
GLES20.GL_UNSIGNED_BYTE,
false,
mStride,
offset);

You will need to make sure you pass a ByteBuffer with the correct format to GLES2 with GLES20.glBufferData.

Lastly, and this is the tricky part and reason why I wrote this article. How to refer to unsigned bytes attributes inside the GLSL shader code?

Well it turns out GLES2.0 does not have ivec4 which is a vector of 4 ints. However, in GLES2.0 you can use “attribute vec4” for unsigned bytes even though the bytes are not 32 bit floats.

This will result in a float data type but you can convert it into int using int(YourVar).