Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

AppGameKit Classic Chat / AGK 2 Official Development Blog

Author
Message
RickV
TGC Development Director
23
Years of Service
User Offline
Joined: 27th Apr 2000
Location: United Kingdom
Posted: 7th Mar 2014 16:46 Edited at: 27th Sep 2017 08:42
AppGameKit Development Blog

THIS BLOG IS RETIRED NOW

FOR ALL THE LATEST NEWS JUST FOLLOW THE APPGAMEKIT NEWS HERE

Hi, in the spirit of openness and transparency we're now publishing the progress of App Game Kit 2 Development.

AppGameKit V2017.09.04 RELEASED!
A couple of maintenance builds have been released during August & September. Read the news blog for more details.

AppGameKit V2017.7.19 RELEASED!
Phew, after a two month development phase we're proud to bring you a new version of AppGameKit with 3D Shadows, 3D Particles and many other fixes and improvements.
For the full details view the blog announcement HERE.

AppGameKit Roadmap 2017

We’re well underway with our roadmap for AppGameKit in 2017 and have already seen the release of two new versions of AppGameKit and a new Sound Library DLC.
Following the community survey earlier this year we have now finalised our development goals and, in the coming months, the core engine of AppGameKit will receive these new features free to all existing users:

• Call DLL commands for Windows: Using these commands developers can call dynamic link libraries from their AppGameKit BASIC source code. Developers of DLL’s can also interrogate AppGameKit and call its commands.
• 3D Shadows: Automatic 3D shadow effects will be added to the 3D engine.
• 3D Particles: With this addition particles can be 3D in shape and move in three dimensions.
• Video Adverts: The Admob Video format will be supported within AppGameKit Tier1 BASIC.
• Box 2D enhancements: The full scope of Box 2D will be possible once these extra commands are released.
• Export to Windows, Mac & Linux from any platform: If you use AppGameKit’s IDE from Windows then you will be able to compile Mac and Linux executables from your chosen development OS. This also applies if you develop from Mac and Linux.
• Load & Save Arrays: Extra commands to quickly save out and load in array data.

These features will roll out in regular updates during the course of the year. Stability of the main AppGameKit product remains a high priority and we will continue to resolve any reported issues as we develop these new features.

We do have more features planned, and these will be made public once the above have been successfully released, but this includes:

AppGameKit VR (Q2 2017)
This new add-on DLC will provide a range of new commands that allow developers to code their own VR demos and games. Easy to use commands will turn on the Head Mounted Display of a VR headset. Touch and button commands report back what the user is doing with the connected touch devices. It will support both the Vive and Oculus devices.

AppGameKit Studio (Q3 2017)
The new AppGameKit Studio provides a Windows styled GUI where you can visually drag & drop, scale and move 2D media for your AppGameKit projects. With emulated display modes you’ll be able to quickly see how your app looks on different device resolutions. Studio will create 2D scenes and once finished they can be exported as BASIC or C++ source code to use in your projects.

Watch this space!
TheGameCreators

-----------------------------------------------------------

Development Update
30th January 2017

This month we've worked on some internal code changes within AppGameKit. We've seperated the OpenGL 3D calls so that they are all in their own source files. This does not affect the engine today but prepares the way for future development of the engine. We've also changed the build process to make it a faster process. Due to these changes our next version will be a BETA on Steam to check that it does not affect existing apps. We'll let you know when we're about to release it.

Fixes in the next version include;
* Fixed HTTPEncode entering an infinite loop
* Fixed Android export not working with Firebase if the Firebase config file contained details for more than one Android app
* Fixed PlayVideoToTexture on Windows not working with WMV videos
* Fixed exported APK crashing if it uses GameCenter commands but was exported without a Game Services ID
* Using InAppPurchaseSetup will no longer display a message box if it is called multiple times in the AppGameKit player, for example when broadcasting an app multiple times
* Updated Ouya export for the latest icon requirements
* Fixed SetObjectMeshFromMemblock sometimes corrupting the vertices of another object on non-Windows platforms
* Fixed 3D physics ragdoll commands reporting that a ragdoll does not exist when it does
* Fixed DrawSprite not using the scissor value set by SetSpriteScissor
* Fixed sprites with multiple images not using the scissor value set by SetSpriteScissor
* Fixed the skybox commands not working on some devices
* Added a new example project that experiments with Tone Mapping
* Removed hack on Android that was used to force the volume buttons to set the media volume rather than the notification volume, which may have been causing audio distortion

Help Guides are being written and released online. You can see the latest ones HERE.

We're also creating YouTube Tutorials.

Development Update
6th January 2017
Sorry for not updating this during 2016. I totally dropped the ball with this blog! As a company we still continued the development of AppGameKit, here are the 2016 hightlights;
Jan - iOS Player released
Feb - AppGameKit 2.0.17 - Terrain added
March - AppGameKit 2.0.18 - Maintenance build
April - Raspberry Pi free version
May - Tier 2 Starter Guide released
May - AppGameKit 2.0.19 - HTML5 support
May - Games Pack 1
June - AppGameKit 2.0.20 - Ogg Support, improved image loading speeds, lots of tweaks
July - New Asset Pack
Aug - Official Guides Updated
Sept - AppGameKit 2.0.21 - Video to texture, shared variables, camera commands + lots of tweaks
Dec - AppGameKit 2.0.22 - True Type Fonts & UTF8, lots of tweaks

TGC will be very focused on AppGameKit. We're starting off with a new maintenance build next week and we're also starting work on improving the documentation and examples.

Development Update
20th November 2015
The development focus for now is to keep fixing any issues found by the community to ensure V2.0.15 is a strong and stable build. We'll keep this focus up to the end of the year before making any new significant development plans for AppGameKit.

Development Update
23rd October 2015
We're currently preparing a full build of V2.0.15 for all platforms (iOS, Android, Mac, Blackberry and Linux)
All going well this will roll out as an Alpha build next week. We'll then see how users get on, fix any bugs and tweaks and after that make it a full official release.

Development Update
12th September 2015

We're working to bring you all a new build in the next 3-4 weeks time. There is some complex shader work that has to be created to make the new 3D commands easy to use and control.

In the meantime, here's the latest list of changes and also a list of new commands you can look forward to soon;

Features fixed and added to
* Added new string commands FindStringCount, FindString, FindStringReverse, CompareString, CompareStringIgnoreCase, ReplaceString, StripString, TrimString, TruncateString, CountStringTokens2, GetStringToken2
* Added SetTweenSpriteXByOffset and SetTweenSpriteYByOffset
* Added commands to create a custom tween with up to 4 float and 4 integer values, and read the values as it is running
* Added GetSpriteOffsetX and GetSpriteOffsetY to return the current offset point
* Fixed the tween commands not working properly when broadcasting multiple apps to a device
* Fixed DeleteAllSprites preventing text and edit boxes from drawing
* Fixed DeleteFile not refreshing the file list when using GetFirstFile
* Fixed OpenBrowser on Windows sometimes not detecting the correct default browser
* Added MinimizeApp command to minimize an app
* Fixed CreateMemblockFromImage not working on render images on Android
* Fixed render images becoming blank on Android when an app is sent to the background
* Added SetObjectZBias to prevent Z fighting
* Changed GetEditBoxChanged to no longer reset after being called, it will now return 1 until the next Sync or Swap call
* Fixed GetSoundsPlaying not recognising when a sound is stopped with StopSoundInstance
* Added a Log command that accepts a float to return the logarithm of a value

New commands coming soon!
This is a list from the new commands currently in their Tier2 state. They will soon be in Tier 1 BASIC too.
static void SetWindowAllowResize( int mode );
static void MinimizeApp();
static float Log( float a );
static float GetSpriteOffsetX ( UINT iSpriteIndex );
static float GetSpriteOffsetY ( UINT iSpriteIndex );
static int GetEditBoxCursorPosition( UINT index );

// Tweening
static void CreateTweenCustom( UINT tweenID, float duration );
static UINT CreateTweenCustom( float duration );
static int GetTweenCustomExists( UINT tweenID );
static void SetTweenCustomFloat1( UINT tweenID, float begin, float end, int interpolation );
static void SetTweenCustomFloat2( UINT tweenID, float begin, float end, int interpolation );
static void SetTweenCustomFloat3( UINT tweenID, float begin, float end, int interpolation );
static void SetTweenCustomFloat4( UINT tweenID, float begin, float end, int interpolation );
static void SetTweenCustomInteger1( UINT tweenID, int begin, int end, int interpolation );
static void SetTweenCustomInteger2( UINT tweenID, int begin, int end, int interpolation );
static void SetTweenCustomInteger3( UINT tweenID, int begin, int end, int interpolation );
static void SetTweenCustomInteger4( UINT tweenID, int begin, int end, int interpolation );
static float GetTweenCustomFloat1( UINT tweenID );
static float GetTweenCustomFloat2( UINT tweenID );
static float GetTweenCustomFloat3( UINT tweenID );
static float GetTweenCustomFloat4( UINT tweenID );
static int GetTweenCustomInteger1( UINT tweenID );
static int GetTweenCustomInteger2( UINT tweenID );
static int GetTweenCustomInteger3( UINT tweenID );
static int GetTweenCustomInteger4( UINT tweenID );

static void PlayTweenCustom( UINT tweenID, float delay );
static void UpdateTweenCustom( UINT tweenID, float time );
static void StopTweenCustom( UINT tweenID );
static int GetTweenCustomPlaying( UINT tweenID );

static void UpdateTweenSprite( UINT tweenID, UINT spriteID, float time );
static void UpdateTweenText( UINT tweenID, UINT textID, float time );
static void UpdateTweenChar( UINT tweenID, UINT textID, UINT charID, float time );
static void UpdateTweenObject( UINT tweenID, UINT objectID, float time );
static void UpdateTweenCamera( UINT tweenID, UINT cameraID, float time );

static void AddTweenChainCustom( UINT chainID, UINT tweenID, float delay );

static void SetTweenSpriteXByOffset( UINT tweenID, float beginX, float endX, int interpolation );
static void SetTweenSpriteYByOffset( UINT tweenID, float beginY, float endY, int interpolation );

// Strings
static int FindStringCount( const char* str, const char* findStr, int ignoreCase, int start );
static int FindString( const char* str, const char* findStr, int ignoreCase, int start );
static int FindStringReverse( const char* str, const char* findStr, int ignoreCase, int start );
static int CompareString( const char* str, const char* str2, int maxChars );
static int CompareStringIgnoreCase( const char* str, const char* str2, int maxChars );
static char* ReplaceString( const char* str, const char* find, const char* replace, int qty );
static char* StripString( const char* str, const char* chars );
static char* TrimString( const char* str, const char* chars );
static char* TruncateString( const char* str, const char* character );
static int CountStringTokens2( const char* str, const char* delimiter );
static char* GetStringToken2( const char* str, const char* delimiter, int token );

// 3D
static void LoadObjectWithChildren( UINT objID, const char *szFilename );
static UINT LoadObjectWithChildren( const char *szFilename );
static void DeleteObjectWithChildren( UINT objID );

static UINT GetObjectNumChildren( UINT objID );
static UINT GetObjectChildID( UINT objID, int childIndex );

static UINT GetObjectNumBones( UINT objID );
static UINT GetObjectBoneByName( UINT objID, const char *name );

static UINT GetObjectNumMeshes( UINT objID );
static char* GetObjectMeshName( UINT objID, UINT meshIndex );
static char* SetObjectMeshTexture( UINT objID, UINT meshIndex, UINT imageID, UINT textureStage );

static void FixObjectToObject( UINT objID, UINT toObjID );
static void FixObjectToBone( UINT objID, UINT toObjID, UINT toBoneIndex );

// Animation
static int GetObjectNumAnimations( UINT objID );
static char* GetObjectAnimationName( UINT objID, int index );
static void PlayObjectAnimation( UINT objID, const char *animName, float starttime, float endtime, int loop, float tweentime );
static void SetObjectAnimationFrame(UINT objID, const char *animName, float time, float tweentime );
static void StopObjectAnimation( UINT objID );
static void ResetObjectAnimation( UINT objID );
static void SetObjectAnimationSpeed( UINT objID, float speed );
static int GetObjectIsAnimating( UINT objID );
static int GetObjectIsTweening( UINT objID );
static float GetObjectAnimationTime( UINT objID );
static float GetObjectAnimationDuration( UINT objID, const char *animName );

// Bones
static void SetObjectBonePosition( UINT objID, UINT boneIndex, float x, float y, float z );
static void SetObjectBoneRotation( UINT objID, UINT boneIndex, float angx, float angy, float angz );
static void SetObjectBoneRotationQuat( UINT objID, UINT boneIndex, float w, float x, float y, float z );
static void SetObjectBoneLookAt( UINT objID, UINT boneIndex, float x, float y, float z, float roll );
static void SetObjectBoneCanAnimate( UINT objID, UINT boneIndex, int animate );

static void RotateObjectBoneLocalX( UINT objID, UINT boneIndex, float amount );
static void RotateObjectBoneLocalY( UINT objID, UINT boneIndex, float amount );
static void RotateObjectBoneLocalZ( UINT objID, UINT boneIndex, float amount );

static char* GetObjectBoneName( UINT objID, UINT boneIndex );
static float GetObjectBoneX( UINT objID, UINT boneIndex );
static float GetObjectBoneY( UINT objID, UINT boneIndex );
static float GetObjectBoneZ( UINT objID, UINT boneIndex );
static float GetObjectBoneAngleX( UINT objID, UINT boneIndex );
static float GetObjectBoneAngleY( UINT objID, UINT boneIndex );
static float GetObjectBoneAngleZ( UINT objID, UINT boneIndex );
static float GetObjectBoneQuatW( UINT objID, UINT boneIndex );
static float GetObjectBoneQuatX( UINT objID, UINT boneIndex );
static float GetObjectBoneQuatY( UINT objID, UINT boneIndex );
static float GetObjectBoneQuatZ( UINT objID, UINT boneIndex );

// Other
static void SetObjectScalePermanent( UINT objID, float x, float y, float z );
static float GetObjectWorldX( UINT objID );
static float GetObjectWorldY( UINT objID );
static float GetObjectWorldZ( UINT objID );
static float GetObjectWorldAngleX( UINT objID );
static float GetObjectWorldAngleY( UINT objID );
static float GetObjectWorldAngleZ( UINT objID );
static float GetObjectWorldQuatW( UINT objID );
static float GetObjectWorldQuatX( UINT objID );
static float GetObjectWorldQuatY( UINT objID );
static float GetObjectWorldQuatZ( UINT objID );
static void FixObjectPivot( UINT objID );
static void SetObjectDepthBias( UINT objID, float bias );
static float GetObjectDepthBias( UINT objID );

// Shaders
static void SetObjectShaderConstantByName( UINT objID, const char* szName, float value1, float value2, float value3, float value4 );
static void SetObjectShaderConstantArrayByName( UINT objID, const char* szName, UINT arrayIndex, float value1, float value2, float value3, float value4 );
static void SetObjectShaderConstantDefault( UINT objID, const char* szName );
static void SetShaderConstantArrayByName( UINT shaderID, const char* szName, UINT arrayIndex, float value1, float value2, float value3, float value4 );

// Physics
static void Create3DPhysicsWorld();
static void Create3DPhysicsWorld( float scaleFactor );
static void Set3DPhysicsGravity( float x, float y, float z );
static void Set3DPhysicsGravity( UINT vectorID );
static void Step3DPhsyicsWorld();
static void Reset3DPhysicsWorld();
static void Delete3DPhysicsWorld();
static void Debug3DPhysicsWorld();
static int Get3DPhysicsTotalObjects();
static int Get3DPhsyicsActiveObjects();
static int Get3DPhysicsTotalJoints();

//Shape Commands
static void SetObjectShapeBox( UINT objID );
static void SetObjectShapeBox( UINT objID, float sizeX, float sizeY, float sizeZ );
static void SetObjectShapeBox( UINT objID, UINT vectorID );
static void SetObjectShapeSphere( UINT objID );
static void SetObjectShapeSphere( UINT objID, float diameter );
static void SetObjectShapeCylinder( UINT objID, int axis );
static void SetObjectShapeCylinder( UINT objID, int axis, float height, float diameter );
static void SetObjectShapeCone( UINT objID, int axis );
static void SetObjectShapeCone( UINT objID, int axis, float height, float diameter );
static void SetObjectShapeCapsule( UINT objID, int axis );
static void SetObjectShapeCapsule( UINT objID, int axis, float sizeX, float sizeY, float sizeZ );
static void SetObjectShapeCapsule( UINT objID, int axis, UINT vectorID );
static void SetObjectShapeConvexHull( UINT objID );
static void SetObjectShapeStaticPolygon( UINT objID );
static void SetObjectShapeCompound( UINT objID );

//Rigid Body Commands
static void Create3DPhysicsDynamicBody( UINT objID );
static void Create3DPhysicStaticBody( UINT objID );
static void Create3DPhysicsKinematicBody( UINT objID );
static void Delete3DPhysicsBody( UINT objID );

static int Create3DPhysicsStaticPlane ( float normlX, float normalY, float normalZ, float offsetPosition );
static void Set3DPhysicsStaticPlanePosition( UINT planeID, float posX, float posY, float posZ );
static void Set3DPhysicsStaticPlaneRotation( UINT planeID, float angX, float angY, float angZ );
static void Delete3DPhysicsStaticPlane( UINT planeID );

static void SetObject3DPhysicsGroup( UINT objID, int group, int mask );
static int GetObject3DPhysicsGroup( UINT objID );
static int GetObject3DPhysicsMask( UINT objID );

static void SetObject3DPhysicsCanSleep( UINT objID, int canSleep );

static void SetObject3DPhysicsMass( UINT objID, float mass );
static float GetObject3DPhysicsMass( UINT objID );

static void SetObject3DPhysicsFriction( UINT objID, float friction );
static float GetObject3DPhysicsFriction( UINT objID );

static void SetObject3DPhysicsRollingFriction( UINT objID, float friction );
static float GetObject3DPhysicsRollingFriction( UINT objID );

static void SetObject3DPhysicsAnisotropicFriction( UINT objID, int type );

static void SetObject3DPhysicsMaxLinearVelocity( UINT objID, float maxLinearVelocity );
static float GetObject3DPhysicsMaxLinearVelocity( UINT objID );

static void SetObject3DPhysicsLinearVelocity( UINT objID, float dirX, float dirY, float dirZ, float initialSpeed );
static void SetObject3DPhysicsLinearVelocity( UINT objID, UINT vectorID, float initialSpeed );
static float GetObject3DPhysicsLinearVelocityX( UINT objID );
static float GetObject3DPhysicsLinearVelocityY( UINT objID );
static float GetObject3DPhysicsLinearVelocityZ( UINT objID );

//static void SetObject3DPhysicsMaxAngularVelocity(UINT objID, float maxLinearVelocity);
static void SetObject3DPhysicsAngularVelocity( UINT objID, float angX, float angY, float angZ, float initialSpeed );
static void SetObject3DPhysicsAngularVelocity( UINT objID, UINT vectorID, float initialSpeed );
static float GetObject3DPhysicsAngularVelocityX( UINT objID );
static float GetObject3DPhysicsAngularVelocityY( UINT objID );
static float GetObject3DPhysicsAngularVelocityZ( UINT objID );

static void SetObject3DPhysicsDamping( UINT objID, float linearDamp, float angularDamp );
static float GetObject3DPhysicsLinearDamp( UINT objID );
static float GetObject3DPhysicsAngularDamp( UINT objID );

static void SetObject3DPhysicsRestitution( UINT objID, float friction);
static float GetObject3DPhysicsRestitution( UINT objID );

//Contact Reports commands
static int GetObject3DPhysicsFirstContact( UINT objID );
static float GetObject3DPhysicsContactX();
static float GetObject3DPhysicsContactY();
static float GetObject3DPhysicsContactZ();
static int GetObject3DPhysicsContactVector( int outPosVec3 );
static int GetObject3DPhysicsContactObjectB();
static int GetObject3DPhysicsNextContact();
static int GetObjects3DPhysicsContactPositionVector( UINT objA, UINT objB, int outPosVec3 );

//Joint Commands
static int Create3DPhysicsPickJoint( UINT objID, int positionVec3 );
static void Update3DPhysicsPickJoint( UINT jointID, int positionVec3 );
static void Delete3DPhysicsPickJoint( UINT jointID );

static int Create3DPhysicsHingeJoint( UINT objA, UINT objB, int positionVec3, int rotationVec3, int disableCollisions );
static int Create3DPhysicsConeTwistJoint( UINT objA, UINT objB, int positionVec3, int rotationVec3, int disableCollisions );
static int Create3DPhysicsSliderJoint( UINT objA, UINT objB, int positionVec3, int rotationVec3 );
static int Create3DPhysicsFixedJoint( UINT objA, UINT objB, int positionVec3 );
static int Create3DPhysics6DOFJoint( UINT objA, UINT objB, int positionVec3, float rotationVec3 );

static void Set3DPhysicsJointSliderAngularLimits( UINT jointID, float lowerLimit, float upperLimit );
static void Set3DPhysicsJointSliderLinearLimits( UINT jointID, float lowerLimit, float upperLimit );
static void Set3DPhysicsJointConeTwistLimits( UINT jointID, float swingSpan1, float swingSpan2, float twistSpan );
static void Set3DPhysicsJointHingeLimits( UINT jointID, float minAng, float maxAng );
static void Set3DPhysicsJointBreakingThreshold( UINT jointID, float breakThreshold );
static void Set3DPhysicsJointEnabled( UINT jointID, int isEnabled );
static int Get3DPhysicsJointEnabled( UINT jointID );
static int Get3DPhysicsJointPositionVector( UINT jointID );
static int Get3DPhysicsJointRotationVector( UINT jointID );
static void Delete3DPhysicsJoint( UINT jointID );

//Compound Shape commands
static void AddObjectShapeBox( int objID, int positionVec3, int rotationVec3, int sizeVec3 );
static void AddObjectShapeSphere( int objID, int positionVec3, float diameter );
static void AddObjectShapeCapsule( int objID, int positionVec3, int rotationVec3, int sizeVec3, int axis );
static void AddObjectShapeCone( int objID, int positionVec3, int rotationVec3, int sizeVec3, int axis);
static void AddObjectShapeCylinder( int objID, int positionVec3, int rotationVec3, int sizeVec3, int axis);

//Exporting, Importing, and Deleting Collision Shapes
static int SaveObjectShape( UINT objID, LPSTR fileName );
static int LoadObjectShape( UINT objID, LPSTR fileName );

//Vector commands
static int CreateVector3();
static int CreateVector3( float x, float y, float z );
static void SetVector3( UINT vectorID, float x, float y, float z );
static void DeleteVector3( UINT vectorID );
static float GetVector3X( UINT vectorID );
static float GetVector3Y( UINT vectorID );
static float GetVector3Z( UINT vectorID );
static float GetVector3Distance( UINT vectorU, UINT vectorV );
static float GetVector3Length( UINT vectorID );
static float GetVector3Dot( UINT vectorU, UINT vectorV );
static void GetVector3Cross( UINT resultVec, UINT vectorU, UINT vectorV );
static void GetVector3Multiply( UINT resultVec, float multiplier );
static void GetVector3Add( UINT resultVec, UINT addVec );


Development Update
26th August 2015
Finally we have a real treat for you!
In this video we're showing the new bone based animation features that will be part of the next major update to AppGameKit. The demo is running at 400+ fps on a Windows PC and we also show it running very fast and smooth on an Android Nexus 7. The latter part of the demo shows the progress of the new physics engine which utilises Bullet Physics.


Development Update
13th August 2015
Eye candy is again in short supply but that doesn't mean we're not coding away on AppGameKit.

In our labs AppGameKit can now load a bone animated object and draw it with proper vertex weights, where one vertex can be influenced by up to 4 bones, with commands to move each bone around by name.

The system can also handle older DarkMatter 1 style models that used limb based animation instead of vertex weighted. Each limb is a separate object placed in a hierarchy and each can be colored, textured, etc, separately from the others, or even detached from the main object and made into a fully independent object, with its own child limbs going with it. The next step will be to use this system to show animated objects, hopefully this will be demonstrated next week.

The Physics work also continues with the next milestone focusing on;
* Compound Shapes
* Exporting, Importing, and Deleting Collision Shapes
* Contact Reports & Collision
* Joint Commands

Development Update
23rd July 2015
There's no special eye candy to show you at present but the team are working hard on the two largest new areas of development (3D & Physics). On the 3D side the meshes are now separated so objects only contain the position and state data whilst the vertices are in a mesh, similar to how DBPro does it. Where an object can contain many meshes, this also matches more closely with how the asset import library loads from the various files. We've also developed a scene graph and are making sure it's compatible with the physics engine. Physics can override the final world position of any object even if it is attached to some other object. The major next step is getting bones in and working, and making use of the new mesh structure to batch similar meshes even if they belong to different objects.

On the physics side the development is on schedule for the first milestone at the end of this month to have;
* Physics World commands
* Primitive creation commands
* Rigid body commands
* Non-object rigid bodies

Here's another demo of the rigid bodies in action;


In 2-3 weeks time we'll show you a demo of the animated 3D commands using bones!

Development Update
3rd July 2015
Work continues on the 3D Engine but sadly no eye candy just yet.
Getting Physical!
In the past week we've teamed up with Stab In The Dark Software who will be implementing the Bullet Physics commands for AppGameKit. Over the next three months they will create the commands that will power the 3D Physics for your AppGameKit games. As a quick test they were able to make this early demo to show 3D objects colliding and reacting.


So there's plenty happening behind the scenes, we've also manned up to split the work load (where it makes sense to do so) and we'll keep showing you demos as the 3D and physics progress!

Development Update
22nd June 2015
Today we're able to share a small video demo.
We've successfully loaded a .X file on both Windows and Android using the Open Asset Import Library.
Paul did some stress testing on Android using his Nexus 7 (2012 model). It is rendering 100 copies (not instances) of the 3D character (approx 8300 polygons), so it is pushing 830,000 polygons at 30 fps with 1 light. The Nexus 5 can do the same at 40-60 fps, which varies due to fill rate not polygon count.

We still need to work on animation and that might slow it down a bit, but we're not batching anything yet which might speed it up a bit. Windows in its current state can handle 1000 copies at 45fps which is limited by no batching, so we're happy with the test results so far!



Development Update
12th June 2015
We initially started looking at COLLADA 3D file format but have since decided to see if we can integrate the Open Asset Import Library.

We have it built in to AppGameKit and so it'll be able to load any of the formats that Asset Import Library claims to support on its website, including .X. We have it compiling on Windows, and nearly compiling on Android, just a few errors with exceptions. We haven't yet hooked it up to the AppGameKit rendering pipeline but hopefully that won't be too much trouble. We're also researching bone animation and the latest standard Dual Quaternion skinning.

Development Update
3rd June 2015
Work has started on the 3D and physics systems for AppGameKit. Currently the work has been research based to establish how best to move forward. We're aiming to support the Collada 3D file format. AppGameKit now has an XML importer so we're able to read the Collada file structure. The next phase is loading in the geometry data into an AppGameKit object. We have exported an animated soldier from our Game Guru project and will use this as a test model for the first iteration. We've also been playing around with the Bullet Physics source code and have the examples compiling and running. There has been no integration yet with AppGameKit.

So all early days for this work but we would hope to be able to show you some visuals early July time.


V2.0.14 Released!
15th May 2015

Shaders
* Fixed LoadSpriteShader(filename) without specifying an ID not using the correct vertex shader
App Export
* Added a check for development profiles in the IPA export, use AdHoc or Store profiles instead
* Fixed error about missing file or directory when exporting Amazon or Ouya APK
* Fixed iOS export with the advert box unticked not removing the advertising identifier (IDFA) from the app
New Commands
* CreateMemblock command will now zero the memblock during creation
* Added GetSpriteScaleX() and GetSpriteScaleY()
* Added WriteString2 and ReadString2 that use a faster method of reading strings from a file
Sprites
* Added Spriter support with LoadSkeleton2DFromSpriterFile()
* Fixed SetScissor generating a warning in the debug log window
* Added ability to loop an animation a specified number of times with a loop count greater than 1
* Fixed a bug where drawing more than 12000 sprites that share the same image could end up drawing nothing
* Fixed crash if an item is deleted that is currently being tweened
* Fixed SetTextScissor not working properly when SetViewOffset or FixTextToScreen are used
iOS
* Fixed GetResumed not being called on iOS after the app goes to sleep for the first time
* Updated iOS AdMob SDK to 7.2.1 which fixes a black screen after showing a full screen ad
Android
* Updated Android Google Play Services (which includes the AdMob SDK) to 7.3
* Fixed Android not caching a full screen AdMob ad before the first call to CreateFullscreenAdvert
* Fixed switching edit boxes on Android sometimes hiding the keyboard for the new edit box
Debugger
* Enabled copying of debug variable values using Ctrl-C on a selected row in the Variables window
* Enabled copying of debug log text using Ctrl-C on a selected row in the Debug Log window

Misc
* Fixed ResetTimer not resetting to exactly 0 on some platforms
* Fixed DrawBox command sometimes producing boxes that aren't perfectly straight

Broadcasting
* Fixed not being able to stop broadcasting if the app generated a lot of warnings while running

V2.0.13 Released!
27th April 2015
We're currently adding in Spriter Pro support to AppGameKit!
The development team are meeting this week to discuss plans for the future 3D engine work for AppGameKit!

V2.0.12 Released!
18th April 2015

Thanks to the great feedback and support since the debugger released we're now able to bring you a new version of AppGameKit with these features and fixes;
* Updated help files to fix squashed logo in the top left
* Fixed Android apps sent to background returning as a blank screen
* Fixed broadcasting sometimes not being able to stop
* Typing a new variable expression in the debug tab whilst the app is paused now evaluates it immediately
* Fixed occasional crash on Android when ending a broadcasted app
* Fixed Facebook commands causing a crash on Android when used in an exported app
* Fixed fullscreen window on Windows sometimes shifting sprite positions downwards
* Fixed exporting of iOS apps from the IDE not passing validation
* Fixed declaring a local variable immediately after declaring a global variable in a function causing the local declaration to be skipped
* Fixed having a global variable declaration on the first line in main.agc causing a compiler crash
* Fixed resizing arrays with more than 2 dimensions using .length on the base array causing a crash
* Changed IDE project file to always save paths with forward slashes to make them portable across platforms
* Updated Chartboost SDK on Android to 5.2.0
* Added option to APK export to support expansion files, currently these can only contain video files and are loaded with LoadVideo("expansion:MyFile.mp4")
* Fixed SaveSound producing corrupt WAV files
* Fixed IPA export sometimes producing an error when nothing was wrong
* Added xxhdpi and xxxhdpi icons to the Android interpreter, when exporting use a 192x192 icon from now on
* Added new Android Tier 2 project interpreter_android_expansion that supports expansion files and builds with API 21
* Fixed tweens not changing a value if the start and end values are the same
* Added tween interpolation mode of -1 to turn off interpolation for a specified value
* Fixed tween chains containing delays jumping to the first frame of the next tween before the delay was finished
* Added SetTweenChainTime to jump to a specific time in the tween chain
* Added GetTweenChainEndTime to return the total length of the tween chain
* Fixed iOS exported apps being able to change orientation during startup before SetOrientationAllowed can take effect
* Fixed iOS exported apps always resuming in the initial interface orientation instead of the current interface orientation, if allowed
* Changed the Android text input method to use a hidden Android edit box to receive input, this should support third party input methods
* Fixed Android keyboard not being able to accept input on Android 5.0 when in landscape mode

V2.0.12 Released!
1st April 2015
No, not an April's fool, it's released with a full debugger!

Today we've rolled out the long awaited V2.0.12 of AppGameKit which now sports a new debugger in the IDE!

The debugger allows you to track changes to any type of variables, array and types. Simply add the variables you want to track in the Debug variables list and these will update as your step through your code. Break points can be placed anywhere in your code and you can step through it line by line when you want to hunt down an elusive logic error. The call stack will show you where code is being called from.

You can even Debug your code direct to your device. For example you can step through your code on your Windows PC and see the results on your Android phone running the AppGameKit Player app, all the values will be reported back to from the app and displayed in the IDE.

We hope you enjoy exploring this new feature of AppGameKit, it's very new so please report any issues back to us if you find any.

Misc fixes in this version

* Fixed an occasional crash caused by calling GetDeviceID()
* Fixed enlarging a multi-dimensional array using .length sometimes causing a crash
* Added a media refresh call after PrintImage() on Android to make the file appear to external apps
* Fixed repeated broadcasting apps leaking memory on the receiving device
* Fixed saving an image to the pictures folder with PrintImage on Android not refreshing the file system
* Fixed Android sensors all returning zero until the app is sent to the background and resumed
* Fixed a crash when passing a type returned from one function into multiple sub functions
* Fixed render images not being restored properly after resuming on Android
* Added SetEditBoxCursorPosition command to bring a certain portion of the text into view
* Fixed iOS exported apps not having the beta entitlement used for the new TestFlight implementation
* Fixed iOS exported apps missing the push notification entitlement
* Fixed network messages sent from one client to another not being received
* Added option to iOS export to add or remove the Advertising Identifier from the exported app
* AppGameKit apps run on Windows will remember their last window position when closed so they don't always start in the center of the screen
* Changed app closing on Android to use the finish activity method rather than force quitting the app, which looks like a crash to some devices

We hope you enjoy this new version. Have a Happy Easter next week, we'll be back to start on the new 3D commands very soon!

First sight of the Debugger!
20th March 2015
Here's a video of the new AppGameKit debugger in action;


First sight of the Debugger!
5th March 2015
Finally we can share some screenshots of the debugger progress! Not all of it is fully functional yet but it gives an idea of how it will work.
You can view the images of the Debugger here on Facebook

The Debug Log at the bottom lists all the errors, warnings, or custom log messages that are output during the running of the program. The Debug window on the left will list a call stack showing what functions were entered to reach the current point, and a list of variables that a user can edit to watch specific values, which will activate when a breakpoint is reached (still to do).

The second screenshot shows the setting of breakpoints with red dots in the IDE (although these currently don't get passed on to the debugger so I can't show it stopping), and the stepping tools that will be available to move forward a line and over or out of functions, whilst watching the values on the left.

BASIC Debugger being Developed
20th February 2015
Debugging work continues. We have command stepping working, so you can now set a breakpoint in your code, wait for the program to hit it and pause, and then move forward a single line, jump into or over functions and jump out of functions. The next thing is to get some variable information back so when it is paused you can see what the value of specific variables are.
Visually there's nothing much to show and as soon as we have something visual to showcase we'll be posting it.

BASIC Debugger being Developed
15th February 2015
Just a quick update to let you know development of the debugger is well underway. We'll bring you some more detailed information about it when we have it up and running and presentable.

V 2.0.11 - released
3rd February 2015
For full details check the forum thread here.


The changes so far for build 2.0.11 - coming soon...
22nd January 2015

* Fixed only being able to export the iOS player when no project is open
* Added Linux IDE, compiler, broadcaster, and player
* Fixed runtime errors in exported apps closing the app instead of displaying the error
* Made Android broadcast app paths case sensitive to match their exported versions
* Fixed a runtime error about no instructions found when assigning an array of strings some default values
* Fixed arrays of strings larger than their default values not initialising the rest to the empty string
* Changed export app name to accept a wider variety of characters
* Changed Random2(int,int) to accept and return values in the range -2,147,483,648 and 2,147,483,647
* Fixed iOS export sometimes not finding the Team ID in the provisioning profile
* Fixed videos not stopping on Android when the device is locked or goes to sleep
* Fixed landscape apps on Android sometimes continuing to run when the app is put to sleep
* Fixed .OBJ files taking a long time to load
* Fixed SeekMusic on Android always using absolute positioning even when mode is set to 1
* Allowed function parameters to have a new line after a comma
* Fixed GetVideoPlaying on Android still returning 1 when the video is paused

AGK V2.0.10 Released
4th December
AGK 2.0.10 Released to TGC buyers. Steam version update shortly.
Change log;
* Any AppGameKit players that have been compiled manually will need to be updated to work with this version, and AppGameKit players for this version will not work with old byte code
* Fixed a crash on Mac if loading an image greater than 2048x2048 that isn't divisible by an appropriate power of 2
* Fixed Blackberry lib missing SetSpriteAdditionalImage command
* Added support for Visual Studio 2013
* Updated the guides section of the help files
* Fixed push notifications not working on iOS 8 and sometimes freezing the app
* Fixed parsing of ‪#‎insert‬ causing an error
* Removing an item from an array with .remove() now initialises that array index back to zero if it is reused
* Fixed a compiler error when using a variable with inc or dec above the point where it is initialised
* Fixed DrawLine, DrawBox, and DrawEllipse sometimes having the wrong color value when rendering to an image
* Fixed For-Next loops defined in functions failing if the Step value is negative on one call and positive on another
* Set the default file encoding for new files to Windows-1252 to support extended ASCII
* Added Steam overlay to Windows interpreter when run from the IDE
* Fixed SetGlobal3DDepth not working and sprites always appearing in front of 3D

Please note that this version has updates to the AppGameKit player which mean it is not backwards compatible with old bytecode, and old players cannot run 2.0.10 bytecode, you will get a warning from the player if the bytecode is incompatible.

AGK2 Alpha 9 Released

* Fixed cut/copy/paste in Mac IDE dialog boxes not working properly
* Fixed cut/copy/paste in Mac and Windows IDE dialog boxes if the default key bindings are changed
* Fixed Mac menu bar not updating its shortcuts if the default key bindings are changed
* Fixed Android apps freezing when rotating the device after using SetScreenResolution
* Added build option to connect directly to a device IP for when broadcasting can't detect the device
* Fixed interpreter sometimes disconnecting from the IDE after broadcasting an app
* Fixed scissor commands not working when using SetRenderToImage
* Added SetSpriteAdditionalImage command to set multiple texture stages per sprite for use with shaders

10th November
All STEAM ahead!
The main focus for the past few weeks has been making AGK2 stable and ready for it's STEAM release. We wanted to keep Blackberry support so we have had to bring that code base up to date and it's taken a bit longer than expected. Some other tweaks and fixes have been made as users reported them in the TGC forums.

* Fixed DeleteTween crashing if the tween is currently in use
* Fixed arrays declared without a type but with a comment after them not appearing in the symbols list
* Fixed full screen adverts sometimes getting cropped
* Added support for Amazon Fire controller trigger buttons
* Changed Android fragment shaders to use highp precision if device claims support, since some devices incorrectly implement mediump as lowp. This may reduce performance so you are encouraged to override it with "precision mediump float;" if you want to force it back to mediump in all cases
* Fixed Mac LoadImage with the BlackToAlpha parameter set to 1 not working
* Fixed misspelling in the Android location permission causing it to fail
* Fixed GetSoundMaxRate on Android returning the minimum rate instead
* Fixed SetRawMousePosition not working properly on Mac
* Fixed #insert not being recognised by the compiler
* Fixed a bug causing IsSupportedDepthTexture to not be recognised as a valid command
* Fixed FacebookPostOnMyWall crashing if called when not logged in
* Added Blackberry support

We're aiming to release on Steam later this month and we'll be releasing with the competition demos. The author of the game Echoes+ has kindly allowed us to showcase his game as part of the STEAM release too.

24th October
Alpha 8 Released!
* Added Alt key code for Windows
* Added #option_explicit and #insert to the help files
* Added Spine commands to get animated bone positions in world coordinates
* Added Spine commands to get skeleton root position
* Added CreateFullscreenAdvert command to display AdMob interstitial ads
* Added SetChartboostDetails to allow the advert commands to display Chartboost ads (currently fullscreen only)
* Added support for using "#version <versionnum>" at the beginning of Windows shaders to allow higher versions
* Added GetRawGPSAltitude to all platforms
* Added XInput support for XBox 360 controllers on Windows
* Added GetRawJoystickConnected to detect if a joystick was removed or reconnected
* Added SetWindowSize to change window size and fullscreen modes instead
* Added install dialog to IDE Tools menu to allow manual installation of projects and tier 2 files
* Added SetCameraAspect to change the aspect ratio when rendering 3D
* Fixed a crash when deleting an image assigned to a cloned sprite
* Fixed local function variables not being assigned their default value
* Fixed float variables not accepting a default integer value
* Fixed broadcasting sometimes not sending updated files if the device time was ahead of the host time
* Fixed DeleteTween causing a crash on Android
* Fixed a crash when returning an array from a function that was declared inside that function
* Fixed global variables defined in functions with AS in a comma separated list creating both a global and local variable
* Fixed SetBorderColor not working properly on Mac
* Fixed using Exit, Continue, or ExitFunction inside a Case statement causing stack corruption
* Fixed Spine sprites sometimes disappearing when near the edge of the screen
* Allowed array default values to span muiltiple lines
* Changed SetScreenResolution to only accept width and height
* Changed default shader version on Windows to GLSL 110 to support OpenGL 2.0 cards such as old Intel integrated graphics
* Changed iOS magnet sensor commands to use the calibrated magnetic field
* Removed the ability to use Goto and labels inside select statements due to stack corruption
* Rearranged joystick button numbers on Mac so they match Windows and Android
* Opening configuration files no longer adds them to the current project
* Creating a new project with a path that doesn't end in a slash no longer causes an error when compiling
* IDE now remembers the order of tabs within a project
* When opening a project the IDE now opens files at last known cursor position

14th October
App Game Kit 2 is being prepared for a Steam release which should see it on the Steam store towards the end of November. Thanks to our existing relationship with Valve on FPS Creator Reloaded we were able to obtain a Steam product code without the need to run a Greenlight campaign.

We are still developing the features promised in the Kickstarter so you can expect to see the first implementation of the Tier 1 debugger when we release on Steam.

Here's a full list of changes since we released Alpha 7.1;

Opening configuration files no longer adds them to the current project
* Fixed a crash when deleting an image assigned to a cloned sprite
* Fixed local function variables not being assigned their default value
* Fixed float variables not accepting a default integer value
* Added Alt key code for Windows
* Allowed array default values to span muiltiple lines
* Fixed SetBorderColor not working properly on Mac
* Added #option_explicit and #insert to the help files
* Fixed using Exit, Continue, or ExitFunction inside a Case statement causing stack corruption
* Removed the ability to use Goto and labels inside select statements due to stack corruption
* Fixed a crash when returning an array from a function that was declared inside that function

26th September
Alpha 7.1 Released!
Hot on the heels on Alpha 7 comes Alpha 7.1!
* Fixed repeatedly pressing the back button crashing Android
* Fixed GetResumed() not working in tier 1
* Fixed "AGK Projects" folder getting installed in the "All Users" documents instead of the current user
* Added GetDocumentsPath() command to get the current user's documents folder
* Fixed iOS lib not working with iOS 8 SDK
* Upgraded iOS libs and projects to XCode 6 and iOS 8
* Updated AppGameKit icon
* Made APK export icon optional
* Made IPA export icon optional
* Fixed Close All Projects menu option not working
* Fixed Mac video position being incorrect if repositioned every frame
* Fixed a crash on Windows when switching music tracks

25th September
Alpha 7 Released!
* Removed dialog asking to create the new folder when creating a new project
* Updated the main.agc template to include window size commands
* Creating a new project no longer creates a setup.agc by default, it can still be used if desired
* Moved default installation path for "AGK Projects" folder to inside "My Documents" on Windows
* Moved AppGameKit write folder for apps from "My Documents/AGK" to "AppData/Local/AGKApps" on Windows
* Creating a new project will no longer overwrite main.agc if it already exists in the project folder
* Fixed compiler path being incorrect on Windows
* Fixed Mac IDE not liking spaces in its path
* Fixed a bug preventing arrays of types being passed into functions
* Attempted to target MacOS 10.7, unable to test (please let us know what you find)
* Added Arm 64 architecture to iOS lib
* Deactivated Twitter commands due to build problems with Arm64
* Fixed message window not remembering its height in some cases
* Changed Windows interpreter so it will attempt to load an "icon.ico" file before defaulting to the AppGameKit logo
* Fixed "open in new window" menu option not working
* Added IDE option to remember open projects when closing
* Fixed Mac compiler not replacing old .app file with the new version
* Added displaying of function parameters on typing a comma in addition to an open bracket
* Fixed broadcasted app not being able to play video if a previous app didn't delete its video
* Fixed Mac video position not matching the coordinates given
* Added SetSkeleton2DFlip to flip a skeleton in the horizontal or vertical axis
* Can now open a project or document's folder by right clicking on it in the side bar

17th September
Alpha 6 Released!

* Broadcasting now supported on Mac
* Export to Android APK on Windows and Mac
* Export to IPA on Mac
* New sensor commands on iOS and Android
* GPS support on all platforms (where available)

12th September
Lots achieved including Mac broadcasting and APK exporting!
Here's a run down of the updates coming your way next week in Alpha 6.

General Fixes

* Joysticks on Mac now work
* Fixed escaped strings (using single quotes) not correctly escaping new line characters
* Fixed FileEOF on Android APK apps not being consistent with other platforms (did not affect broadcasted apps)
* Fixed Facebook photo downloads going to different folders on iOS and Android, they will now both be placed in the current folder
* Fixed SetSpriteShapeCircle() with setPhysicsDebugOn() not showing the correct position of the shape
* Fixed HTTP file uploads on iOS when using HTTP authentication
* Fixed assigning a variable the lowest possible integer value -2147483648
* Fixed network bug where a disconnected socket would prevent the broadcaster reconnecting

IDE Updates

* Fixed adding new files to a project not updating the side bar properly
* Fixed syntax highlighting of hexidecimal numbers
* Fixed Dwmapi.dll sometimes causing a crash
* Added some themes for the main IDE look
* Added an IDE option to highlight other instances of the currently selected word (on by default)
* Fixed message window in Mac IDE getting progressively lower when auto hide is turned on
* Fixed paste not working in the Mac editor window
* Fixed Mac key bindings so they default to the Cmd key
* Added app broadcasting on the Mac
* Fixed Find In Files freezing the IDE on Mac
* Fixed Mac IDE sometimes saying compilation failed without showing the compiler errors
* Added export APK option to the IDE

Commands

* Added Gyro/Magnetic/Rotation/AmbientLight sensor commands for Android
* Added Gyro/Magnetic/Rotation sensor commands for iOS
* Added GPS commands to Windows, Mac, Android, and iOS
* Removed redundant ultrabook sensor commands like inclinometer, these can be calculated from the accelerometer
* Separated documentation for input commands into a raw section and a universal section
* Added GetFileCount and GetFolderCount commands
* Added GetDeviceID command
* Added CopyMemblock command
* Added runtime error for integer division by zero
* Updated help files for iOS and Android push notifications
* Added SetPushNotificaitonKeys so the AGKHelper.java file doesn't have to be edited

We're aiming to roll out Alpha 6 early next week and will be in touch with backers as soon as it's ready for download.

8th September
Last week has seen the completion of two new areas of development.

1. Mac app broadcasting is now working on the mac platform. This nicely rounds off the AppGameKit IDE solution for Mac.

2. We have also nearly completed an off-line APK builder. We decided to go about it slightly differently than the on-line method. Now individual permissions can be set by users, plus it makes it easier for us to keep it up to date.

We also have a couple of surprises for the next build!

Android now has a full set of sensor commands Gyroscope/Magnetic/Ambient Light/GPS (we know users have wanted these for a while). We just have to update iOS.
We may be able to export to XCode archive rather than IPA in the Mac IDE. An XCode archive would appear in the XCode organiser where it can be signed and converted to IPA or submitted to the App Store without having to use XCode to compile anything.
We'll aim to create a new build soon so you can get your hands on these nice new features.

29th August
Sorry for the lack of posts. I was away towards the end of July and part of August. Key developments since the last entry;

* IDE & Compiler now released for Mac!
* IDE fully implemented across Windows & Mac
* AGK Player 2 released on Android
* Lots of bug fixes
* For full details check the Kickstarter updates

18th July
The main work these past couple of weeks has been integrating project support into the new IDE system. It's proven to be a bigger task than expected but we are making good progress.

Learning the Geany system and stripping out the current project system and then trying to replace it with a more suitable version for AGK2 projects. Once this hurdle is over we'll be back to making faster progress.

4th July
The new AppGameKit 2 IDE is now taking shape!
Currently the IDE can;
* Highlight your code syntax
* Fold code (functions, loops and comments)
* Symbol parsing - so you can easily see all the functions in your code and access them from a side panel
* As you type commands the IDE will present IntelliSense so you can quickly enter commands.
The IDE is a big step up from V1. It feels robust, feature rich and un-bloated

We're now working on connecting up the Compiler so code can be built. Then we'll be working on the debugger side of the IDE.

For images see the Kickstarter Update HERE

27th June
The past week has seen us fix many compiler issues. The feedback from early testers has really helped us fine tune the new, faster Compiler.

Compiler Fixes
* Arrays in types not being able to accept values
* Passing arrays by value into functions causing a crash
* Negative values in constants causing errors
* Empty IF/ELSE statements not being accepted
* Using types of types in expressions
* Being able to declare functions without names
* Arrays can now be defined with no length parameter like "dim array[] as integer", the array will be empty until resized
* Array default values not accepting negative values

New Compiler features
* Array.sort() to sort array elements in ascending order
* array.insertsorted(expr) to insert an expression into a sorted array
* array.find(expr) to return the array index that equals the expr in a sorted array
* array.reverse() to reverse all the elements in an array
* Arrays of types can use the above sort/insertsorted/find functions, they will be compared based on the value of the first variable in the type

Some known issues that will be fixed in the next update
* DeleteAllSprites() prevents future sprites from being created
* All projects currently share the same interpreterV2 folder in the documents folder
IDE

For the IDE we are looking at Geany which we have successfully compiled for Windows and Mac, and we are now modifying to work with AGK. It will of course be open sourced under GPL when we are done with it.

20th June
Today we have released the Compiler to all AGKV2 pledgers.

13th June
All existing language features have now been completed and testing with some existing projects shows very promising results. The compiler is about 40 times faster than before and the interpreter appears marginally faster although this hasn't been extensively tested yet. Byte code file sizes are now 7 times smaller when uncompressed, compressed size is about the same as before.

There are some additional languages features that the new interpreter supports but aren't yet exposed by the compiler, they are array inserting/removing/swapping elements, but first we want to make sure that existing projects are working exactly as with the old interpreter (or better).

11th June
The main Compiler work has been competed! Early tests are showing it's lightning fast compared to the older V1 Compiler. We'll bring more info to you on Friday!


6th June
The main development focus these past couple of months have been on the new Compiler and Interpreter. Here's a quick update on what's been achieved recently;

* User defined functions can now return types and arrays
* In general types and arrays can now be assigned to variables of matching types and passed to functions by value or reference.
* Parsing of IF statements is now completed
* Parsing of the 4 loop types DO, FOR, WHILE, and REPEAT is now completed
* All 4 loop types DO, FOR, WHILE, and REPEAT now have a new command CONTINUE which will skip the rest of the current iteration and move on to the next iteration.
* Parsing of SELECT statements is almost complete
After SELECT statements all the language parsing will be complete and testing on large real world projects can begin to check that there are no errors with existing tier 1 code, and give us an idea of compiling performance. Then the data (variables and instructions) will be packed into the byte code file format for the new interpreter and testing can begin to check it performs identically to the existing compiler and interpreter.

2nd June
Only a 3 day week last week due to the bank holiday and a day off on Friday so not a lot of progress, but I've nearly completed the function code for handling parameters and local variables. Functions now have the ability to return types and arrays and assign them to global variables or use them directly as parameters to other functions. This required a lot of care as temporary pointers created on the stack must be recognised when they are popped and properly freed so they don't leak memory, whilst types passed by reference must not be freed as it would destroy the original variable.

23rd May
This week Paul has finished the expression type casting work. So now it can also handle AppGameKit commands that have multiple compatible types. For example Str(int) and Str(float) would take Str(6) as an integer, where as Update(float) would take Update(6) as a float.

Paul has now moved on to function parsing which handles local variables and arrays. These are now placed on the stack instead of in global storage, and passing arrays and types by reference so that modifying their contents affects the original copy or passing by value so any changes remain inside the function” So basically variable handling is really working well.

We know the Compiler and Interpreter work has been going on for some time now but we're through the hardest part and should be looking to release a new Alpha in June for you all to start playing around with. Thanks for your patience!

19th May
Added code to validate function calls matching parameter count and types for AppGameKit commands and user functions. Added more expression rules for types and arrays so it can now parse expressions like;
"mytype.x = othertype.arrayoftypes[a].somevalue"

Arrays can be resized with "array.length = myType.num + 5".

At this point we started testing the bytecode output and realised it would also have to handle type casting so expressions like "a = 6.5" would function correctly if "a" is defined as an integer and promoting integers to floats in mixed expressions like "6.5 + 7" producing a float result. The changes to support this are nearly done. After which testing can resume to see if anything else comes up.

12th May
Implemented a new variable handler that should be able to deal with the various scopes (global, local, and function local). The parser can now recognise all the possible variable declarations, including old DIM style arrays and new array declarations of the form "myArray as integer[5]", type declarations, and default values for basic data types (integer, float, string + arrays). It can also now parse expressions like "a = 5+func()*b[5]" checking that every function, array, or variable is properly defined. Still to do is parsing conditionals and loops, and handling local variables inside functions.

6th May
We're still working on the parser to make sure it's backwards compatible with existing code, which has some interesting edge cases that need handling. For example when calling a gosub from within a function the gosub loses access to the function local variables and gains access to non-global variables outside the function. Hopefully we won't run into many more unusual cases this week and have something up and running soon. Cheers for being so patient while we work on this very deep part of AppGameKit V2!

28th April
The interpreter is now pretty much feature complete and multidimensional arrays are represented as arrays of arrays allowing each dimension to be resized individually. Work returns to the parser and making it output bytecode compatible with the new interpreter.

22nd April
Finalised the function call procedure that allows recursive functions with arrays, types, passing by reference or value, and added the ability to handle local arrays in functions. The next problem we're working on is how to handle multi-dimensional arrays, either flattening it into a single large array or having arrays of arrays which opens up interesting future uses. In particular what happens when either of these are dynamically resized, considering it has to be backwards compatible with existing functionality. Happy Easter BTW!

14th April
Started working in reverse and modified the interpreter to run a mocked up output of the parser as some difficult decisions had to be made about the best way to represent types and arrays in the final output. This will allow AGK2 to have arrays in types and in theory allow passing arrays and types through multiple levels of functions (still working that bit out). We can then make the two meet in the middle so the parser outputs what the interpre
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 7th Mar 2014 17:30
First off, thank you so much for starting this up

Quote: "Working on a tier 1 command to change the resolution of an Android device at runtime (including Ouya)"

Wow, wow, wow I can't wait! This day just keeps getting better and better. I am having a day off and I can't believe how many good things have happened today. This is the 3rd big stone lifted from my shoulders today. I am planing on sending a PC build of RTA to some OUYA guys this weekend. Now I can also say that official support for altering the resolution is coming soon. Now I can stop banging my had at this problem

SecretGhost
21
Years of Service
User Offline
Joined: 8th Oct 2002
Location:
Posted: 7th Mar 2014 18:55
"Completed the Ouya In App Purchase system"

i wish this would done in AppGameKit 1.
Tone Dialer
Valued Member
18
Years of Service
User Offline
Joined: 17th Oct 2005
Location: England, well a town in it !
Posted: 7th Mar 2014 19:29
Thank you Rick and the TGC guys, the AppGameKit 2 Blog is appreciated.

Lucas Tiridath
AGK Developer
15
Years of Service
User Offline
Joined: 28th Sep 2008
Location: Kings Langley, UK
Posted: 7th Mar 2014 20:48
Hats off to TGC for listening to the community. This is a really positive development. Thanks for all your hard work on AppGameKit and I look forward to following the progress of V2 .

Satchmo
18
Years of Service
User Offline
Joined: 29th May 2005
Location:
Posted: 7th Mar 2014 21:15
Thank you rick this is what a lot of us wanted.

Arbrakan
13
Years of Service
User Offline
Joined: 10th Oct 2010
Location: Geneva
Posted: 7th Mar 2014 22:02
Thanks for this great news TGC !

unlikely
12
Years of Service
User Offline
Joined: 5th Mar 2012
Location: Ohio, USA
Posted: 8th Mar 2014 00:52
Yep, thank you for this initiative. Great move--will definitely help satiate fears / concerns about AGKV2's status.
The Daddy
15
Years of Service
User Offline
Joined: 13th Jan 2009
Location: Essex
Posted: 8th Mar 2014 01:33
Thanks guys! Much appreciated!

www.bitmanip.com
All the juicy you could ever dream of!
Ched80
13
Years of Service
User Offline
Joined: 18th Sep 2010
Location: Peterborough, UK
Posted: 8th Mar 2014 09:02
Woo! great to see this. I'm a big believer in these blog things ever since Lee started the one for Reloaded. Even if some of the days show little to no progress its great to see that things are slowly moving forward.

bjadams
AGK Backer
16
Years of Service
User Offline
Joined: 29th Mar 2008
Location:
Posted: 8th Mar 2014 14:07
great work.
but put all the blog news in a LOCKED thread so we can only see the dev news only not 101 msgs!
The Zoq2
14
Years of Service
User Offline
Joined: 4th Nov 2009
Location: Linköping, Sweden
Posted: 8th Mar 2014 14:10
my guess is that they will update the first post and let us discuss in the messages which seems like a pretty good idea

Say ONE stupid thing and it ends up as a forum signature forever. - Neuro Fuzzy
Cliff Mellangard 3DEGS
Developer
18
Years of Service
User Offline
Joined: 20th Feb 2006
Location: Sweden
Posted: 8th Mar 2014 15:57
Wath! is there an agk2

Android 2.3 , ZTE Skate , 480x800 , 800 mhz , Samsung Galaxy Y , 240x320 , 832 mhz , Sony ericson arc 480x854 , 1 ghz
Android 4.0 , Dmtech 3g 9738B , 1024x768 , 9.7 inches , 1.2 ghz
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 8th Mar 2014 16:05
Quote: "my guess is that they will update the first post and let us discuss in the messages which seems like a pretty good idea"


I agree!

DennisW
15
Years of Service
User Offline
Joined: 15th Jun 2008
Location: Ohio
Posted: 9th Mar 2014 02:52
Good move Rick now everybody can watch the baby grow.

Ham and Eggs Breakfast
The Chicken was involved the Pig was Committed
AGK Community Tester
Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 9th Mar 2014 14:29
I'm still not sure about how fair AppGameKit V2 really is, given I paid for a product that is now left unfinished. For example, very few of the Input\Support commands have been finished (compass, gyro, inclinometer, geolocation and light sensor commands are all useless). I know TGC basically ran out of money and were forced to go V2, but I can't help but be a little bit annoyed. Anyway, what's done is done and I'm glad at least that TGC has funds once again; it would be even worse for AGK's health if they went bankrupt

Quote: "Woo! great to see this. I'm a big believer in these blog things ever since Lee started the one for Reloaded. Even if some of the days show little to no progress its great to see that things are slowly moving forward."


Absolutely!

SoftMotion3D
AGK Developer
18
Years of Service
User Offline
Joined: 24th Aug 2005
Location: Calgary,Alberta
Posted: 9th Mar 2014 16:07
hey great stuff rick & paul!

Im really looking forward to seeing some 3d animation in agk 2 and am glad we hit that stretch goal. Seeing the ouya support is a great bonus. I wonder if you guys plan on adding multi camera support. ei for a 2 player split screen over ouya.

The Zoq2
14
Years of Service
User Offline
Joined: 4th Nov 2009
Location: Linköping, Sweden
Posted: 9th Mar 2014 16:13
Split screen is probably doable using the render to image command...

Say ONE stupid thing and it ends up as a forum signature forever. - Neuro Fuzzy
xCept
21
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 9th Mar 2014 18:27
^ I'm still not convinced that the Render to Image functionality is working as it should. I've had a hard time using it for simple 2D operations and haven't seen any working examples of it. It seems unless you initialize some part of the 3D engine by creating a plain etc. nothing will be rendered to the image and it will remain black. I'd like to see an example that works with just 2D sprites as right now it works but only with 3D aspects.
SoftMotion3D
AGK Developer
18
Years of Service
User Offline
Joined: 24th Aug 2005
Location: Calgary,Alberta
Posted: 9th Mar 2014 19:25
yeah render to image is not what I want to use for split screen.

Zwarteziel
13
Years of Service
User Offline
Joined: 22nd Jan 2011
Location: Netherlands
Posted: 9th Mar 2014 19:30
Great news to have this thread! Many thanks!
Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 10th Mar 2014 03:07
Quote: "I'm still not convinced that the Render to Image functionality is working as it should."


Quote: "yeah render to image is not what I want to use for split screen."


I never believed the render to image command in DBPro worked properly either. Maybe the code needs to be tested more thoroughly and an update made. If they just copied the maths and basic code flow from its DBPro implementation, then it may be flawed.

xCept
21
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 10th Mar 2014 04:27
Other OpenGL engines I know of have really easy and useful render texture commands, which is how I envisioned the render to image functionality. In such instances, you simply open up the alternate buffer for rendering, draw sprites as desired, then close the buffer and that becomes a usable sprite/texture.

[renderTexture clear];
[renderTexture begin];
[spriteObject visit];
[renderTexture end];

If AppGameKit could achieve similar streamlined functionality it would be very valuable for many projects. Right now even the example is pretty obtuse and seems dependent on 3D to function.
JohnnyMeek
10
Years of Service
User Offline
Joined: 23rd Apr 2013
Location: Slovenia
Posted: 10th Mar 2014 08:11
I'd like to request that we have a better implementation of admob, you can now also use interstitials. I know a few developers who are making a good living using this method to monetise their apps.

Also, while you're at it could you implement Flurry so that we can have analytics in our games

Any chance??
bjadams
AGK Backer
16
Years of Service
User Offline
Joined: 29th Mar 2008
Location:
Posted: 10th Mar 2014 15:39 Edited at: 11th Mar 2014 12:07
app monetisation would be #1 priority, especially for us, smalltime developers

also this style of one line updates on the progress is GREAT. PLEASE KEEP IT THAT WAY, no need of video blogs or long article updates
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 11th Mar 2014 15:14
Quote: "Completed resolution command, started bringing other platforms up to date
Android and Ouya working with 2.0 Alpha 2 code"


That is awesome!

OUYA will be at GDC next week and at the end of Dev Support Office Hours yesterday they mentioned that devs can send them builds to have available at the show. But that means emailing them at the latest on Friday. So, if at all possible, I would love to be able to send them a build before them and have RTA playable at GDC. That would be awesome.

Paul Johnston
TGC Developer
21
Years of Service
User Offline
Joined: 16th Nov 2002
Location: United Kingdom
Posted: 11th Mar 2014 22:38 Edited at: 11th Mar 2014 22:41
Quote: "OUYA will be at GDC next week and at the end of Dev Support Office Hours yesterday they mentioned that devs can send them builds to have available at the show"


I've updated the online APK builder to build 2.0 Alpha 2 compatible APKs for Android and Ouya devices (quick link), just use the drop down box to select "2.0" or "2.0 Ouya". To change the resolution use the command SetScreenResolution( 1280,720,0), or whatever resolution you want to use.

Edit: Ouya IAP won't work with this yet as you need to set your public key in the code, but I plan to add a tier 1 command to set this in future.
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 11th Mar 2014 23:58
Thanks Paul

So, installed the Alpha 2 for the first time and compiled RTA. Here are my problems so far:

1. All my text objects are gone/invisible. Print still works.
2. When I quit I now get an error message.
3. Using SetScreenResolution( 1280,720,0 ) I actually get 1274x687 on PC.
4. On OUYA the icon is the AppGameKit one, tiny in the corner on a white background. The apk itself shows mine. But at least it shows up in the Play section.
5. The game instantly crashes on OUYA. Both with and without the SetScreenResolution command.

Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 12th Mar 2014 00:22
Quote: "1. All my text objects are gone/invisible. Print still works.
2. When I quit I now get an error message.
3. Using SetScreenResolution( 1280,720,0 ) I actually get 1274x687 on PC.
4. On OUYA the icon is the AppGameKit one, tiny in the corner on a white background. The apk itself shows mine. But at least it shows up in the Play section.
5. The game instantly crashes on OUYA. Both with and without the SetScreenResolution command."


lol good start

Paul Johnston
TGC Developer
21
Years of Service
User Offline
Joined: 16th Nov 2002
Location: United Kingdom
Posted: 12th Mar 2014 00:58
Can you email me the project and I'll see if I can replicate the problems.
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 12th Mar 2014 09:53
Quote: "Can you email me the project and I'll see if I can replicate the problems. "


Done

Not the best looking code though. But enjoy the game

Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 12th Mar 2014 10:21
Paul:
BTW, does your OUYA APK builder support OUYA's icon sizes?

https://devs.ouya.tv/developers/docs/stand_out_on_ouya

Paul Johnston
TGC Developer
21
Years of Service
User Offline
Joined: 16th Nov 2002
Location: United Kingdom
Posted: 12th Mar 2014 18:25
Ok it should work now, you'll still get 1274x687 on the PC but that'll be fixed in the next build. The online tool now also requires a 732x412 image for Ouya, but it seems Ouya caches any old images based on the package name so you'll have to use a new package name to see the new images.
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 12th Mar 2014 19:15
Quote: "Ok it should work now, you'll still get 1274x687 on the PC but that'll be fixed in the next build. The online tool now also requires a 732x412 image for Ouya, but it seems Ouya caches any old images based on the package name so you'll have to use a new package name to see the new images. "


Great! I'll give that a try soon My text objects didn't show up on PC before. Did they show up for you?

To clear the cashe either reboot the OUYA or press dpad up 5 times then down 5 times, then RB 5 times and LB 5 times. Or was it down before up? Something like that You may need to be at the main menu. A message will pop up after doing it. Watching the OUYA office hours on Youtube on Mondays can be very helpful

Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 12th Mar 2014 20:57 Edited at: 12th Mar 2014 21:02
RTA now runs perfectly on OUYA. Setting the resolution to 1280x720 works great. Text objects, icon, everything exactly as it should. Thank you so much for making this work Paul

BTW, clearing the cashe (down,up,RB,LB on main menu) didn't work. But turning the OUYA off and on gave me the new icon.

xCept
21
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 13th Mar 2014 00:33
I'm really happy Ouya support is making good progress. I bought one during Cyber Monday but it's sat unused due to time constraints and knowledge that AppGameKit wouldn't quite work well yet. Can't wait for Ouya IAP!
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 13th Mar 2014 10:11
Paul:
Just wanted to let you know that the coordinates for the pointer on OUYA doesn't report the correct values when altering the resolution. For me this is not a problem at all since I have full controller support. But something you may want to look into.

Quote: "I'm really happy Ouya support is making good progress. I bought one during Cyber Monday but it's sat unused due to time constraints and knowledge that AppGameKit wouldn't quite work well yet. Can't wait for Ouya IAP! "

I just love using mine. Sitting the couch playing RTA on my big 55" TV with a controller in my hands is amazing Just sideload the player. You should get SMD_3D's 720p player. OUYA's fillrate is a bit low and that should make your games run up to twice as fast. The pointer coordinates are off but otherwise it's great. I can hit compile and broadcast from my laptop and have the latest version running on OUYA in less than 30 sec. And since the player stores savefiles I can continue where I was in the game. I can make changes to levels, the map, controls etc on the laptop and then test them out on OUYA.

DennisW
15
Years of Service
User Offline
Joined: 15th Jun 2008
Location: Ohio
Posted: 13th Mar 2014 16:26
@ Paul

Just a heads up on my use of the on line apk package. I use explore 10 so when I go to use the site I have to click on compatibility tab in my address bar. If anyone is using IE 10 remember to use that then take it back off when you go to TGC site. I uploaded a project I have been working on in spine. I got the APK back and installed it on my Nexus 7 and ran without a problem.

Keep it coming Paul ;Good Work
Dennis

Ham and Eggs Breakfast
The Chicken was involved the Pig was Committed
AGK Community Tester
Naphier
13
Years of Service
User Offline
Joined: 2nd Oct 2010
Location: St Petersburg, Florida
Posted: 14th Mar 2014 17:03
subscribing for updates (not sure if this will pick up edit on the first post though...)

Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 14th Mar 2014 22:15
RTA will be playable on OUYA at GDC

Thanks again Paul

bjadams
AGK Backer
16
Years of Service
User Offline
Joined: 29th Mar 2008
Location:
Posted: 14th Mar 2014 23:56
Isn't AGK2 alpha 2 Windows only?

how did you manage to generate an android apk?
Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 15th Mar 2014 01:13
Quote: "(not sure if this will pick up edit on the first post though...)"


No, edits don't cause email notifications, but most people post AND edit.

Impetus73
12
Years of Service
User Offline
Joined: 28th Aug 2011
Location: Volda, Norway
Posted: 15th Mar 2014 09:40
@bjadams, see the first post in this thread, for updates:

Quote: "Updated the online APK builder so it can now build Alpha 2 APKs for Android and Ouya devices!"




----------------
AGK programmer
Did Amiga / AMOS programming in the 90's.
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 15th Mar 2014 10:57
Quote: "how did you manage to generate an android apk? "

You should read through the 2nd half of the first page of this thread. Starting with my post about OUYA at GDC. Paul replied directly after that.

Now I'm wondering if people will notice the game or not. I don't know how manu OUYAs will have my game on it or how many other games there will be.

Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 15th Mar 2014 14:24
Quote: "Now I'm wondering if people will notice the game or not. I don't know how manu OUYAs will have my game on it or how many other games there will be."


Unfortunately every indie developer has to go through that, the worry that their brilliant idea wasn't such a great idea after all. There's no way to find out but to try it.

Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 15th Mar 2014 14:45
Quote: "Unfortunately every indie developer has to go through that, the worry that their brilliant idea wasn't such a great idea after all. There's no way to find out but to try it."


Thats a whole other worry altogether. There are 2 problems. First people have to find the game. Then they also have to like it. A few have been very positive about the game so far. But I have no idea how wide the appeal is. I am really happy with the new look and gameplay myself.

Clonkex
Forum Vice President
13
Years of Service
User Offline
Joined: 20th May 2010
Location: Northern Tablelands, NSW, Australia
Posted: 15th Mar 2014 15:37
Quote: "There are 2 problems. First people have to find the game. Then they also have to like it."


That's pretty much what I meant. Until you release it, you really have no idea if people are going to even know it exists, and if they do, if they're going to like it.

bjadams
AGK Backer
16
Years of Service
User Offline
Joined: 29th Mar 2008
Location:
Posted: 15th Mar 2014 18:18
I use Tier2 so I need the C++ libs to build an android apk!
Digital Awakening
AGK Developer
21
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Sweden
Posted: 15th Mar 2014 19:03
I think they are coming soon. Paul seems to be working on finalizing stretch goal 1 now. Hopefully it will be working on all platforms and both tiers soon. Then we can all get excited about stretch goal 2.

Alien Menace
AGK Developer
19
Years of Service
User Offline
Joined: 11th Jan 2005
Location: Earth (just visiting)
Posted: 17th Mar 2014 06:23
So.. where are the updates for the 13th and 14th?

Apps published: 4

Login to post a reply

Server time is: 2024-04-18 04:32:39
Your offset time is: 2024-04-18 04:32:39