The 1.5 version of Jatris is now available.
The free and full version are now based on the same code and using the new rendering and scaling system.
The two weeks delay between the releases was caused by some bugs emerged during tests, one specific of the full release and a couple in common with JatrisFree; the latter will be ported to JatrisFree in the next bugfix version (maybe 1.51).
By the way this new version is smaller (2Mb instead of 3Mb) small thanks to the new rendering system.
Enjoy.
lunedì 18 gennaio 2016
mercoledì 6 gennaio 2016
JatrisFree 1.5 Released
After more than a year a new version of JatrisFree is available.
This release includes a massive code rewrite and cleanup.
Most of the new code is invisible to players but it was done to complete
the underlying library and to make it more flexible for future use.
The most visible difference is the new scaling system and rendering engine
that make possible the use of JatrisFree on tablets.
The new system can scale the game from 320x200 to 2560x1600 and adapt to
the intermediate resolutions (almost) regardless of density and aspect ratio.
This version was tested on physical devices with Android 2.3, 4.0, 4.1, 4.4.x, 5.0.x and on emulators with Android 2.2, 3.2, 4.2.x (have no more a device with 2.2 on board)
The full version (Jatris) will be released shortly.
Changes in 1.5
New rendering system.
Supports all previous resolutions and was tested in
540x960, 1024x600, 1280x800, 1920x1080, 2560x1600 and with the 1024x768 (4/3 aspect ratio).
More accurate rendering of fonts in non native resolutions.
Fixed some error in jewel removal in complex multiple chains.
Support for Android 5.x.
No specific change needed, just tested with success using phones and tablets with 5.x os version.
This release includes a massive code rewrite and cleanup.
Most of the new code is invisible to players but it was done to complete
the underlying library and to make it more flexible for future use.
The most visible difference is the new scaling system and rendering engine
that make possible the use of JatrisFree on tablets.
The new system can scale the game from 320x200 to 2560x1600 and adapt to
the intermediate resolutions (almost) regardless of density and aspect ratio.
This version was tested on physical devices with Android 2.3, 4.0, 4.1, 4.4.x, 5.0.x and on emulators with Android 2.2, 3.2, 4.2.x (have no more a device with 2.2 on board)
The full version (Jatris) will be released shortly.
Changes in 1.5
New rendering system.
Supports all previous resolutions and was tested in
540x960, 1024x600, 1280x800, 1920x1080, 2560x1600 and with the 1024x768 (4/3 aspect ratio).
More accurate rendering of fonts in non native resolutions.
Fixed some error in jewel removal in complex multiple chains.
Support for Android 5.x.
No specific change needed, just tested with success using phones and tablets with 5.x os version.
sabato 3 maggio 2014
JatrisFree version 1.43 released
Released version 1.43 for Jatris Free.
After a year something new.
This version fixes the incompatibility with Android 4.3 and above.
The full version of Jatris was not affected by this problem due to differences in
graphic code.
After a year something new.
This version fixes the incompatibility with Android 4.3 and above.
The full version of Jatris was not affected by this problem due to differences in
graphic code.
martedì 5 marzo 2013
Version 1.42 released
Released version 1.42 for both Jatris Free and Jatris.
This version fixes the random crash mentioned in previous posts.
Also some graphics errors in 2nd skin were fixed for full version.
This version fixes the random crash mentioned in previous posts.
Also some graphics errors in 2nd skin were fixed for full version.
sabato 26 gennaio 2013
NullPointerException Bug reported again
A new report for a NullPointerException at startup was signaled by an user.
It's the same bug found in 1.32 in drawString.
Some code modification was done in 1.4 to workaround the problem, apparently without success.
Thanks to the report, the root cause was isolated (a missing initialization) and
(hopefully) fixed.
The fix will be included in the upcoming 1.42 release for both free and paid versions.
It's the same bug found in 1.32 in drawString.
Some code modification was done in 1.4 to workaround the problem, apparently without success.
Thanks to the report, the root cause was isolated (a missing initialization) and
(hopefully) fixed.
The fix will be included in the upcoming 1.42 release for both free and paid versions.
giovedì 17 gennaio 2013
One year of Jatris Free
One year ago Jatris Free was published on Google play for the first time.
Time for some numbers :
1560 downloads
220 active users
Not so big numbers but increasing :-)
I'm now working to extend the graphic library to include OpenGL 2d rendering (now Jatris uses Canvas only) in order to switch between this two modes when creating a more power requiring game.
To achieve graphic backend independence I'm rewriting the code in order to completely separate the rendering code from the logic one.
During code rewrite some bug was found and fixed.
Time for some numbers :
1560 downloads
220 active users
Not so big numbers but increasing :-)
I'm now working to extend the graphic library to include OpenGL 2d rendering (now Jatris uses Canvas only) in order to switch between this two modes when creating a more power requiring game.
To achieve graphic backend independence I'm rewriting the code in order to completely separate the rendering code from the logic one.
During code rewrite some bug was found and fixed.
martedì 27 novembre 2012
Support for more screen size...at a cost
A little digression on JaTris support for devices with 600x1024 or bigger resolution.
As you can see from the images below JaTris full (designed as JaTris free for 480x800 pixel), supports 600x1024, 720x1280 and 800x1280 modes better than the free counterpart.


However this support has a cost, JaTris is 3Mb while JaTris free is 1.2Mb long.
Some of this space is due to skin system graphics and a little end of game animation but 1.5Mb is due to the replication of sprites for higher resolution screen support.
The problem is the mix of DPI and pixel resolution used by Android system to render graphics.
It works well for smartphones (little screen dimension, with a bunch of pixel resolutions); you ake the graphics for the biggest resolution and let the automatic rescaling do the job for you (it works like a charm).
Unfortunately tablets are different, bigger screens mostly with mid dpi and a bunch of pixel resolutions; the graphics done for smartphones is far too small when rendered on tablets.
The only solution seems to duplicate graphics in high dpi for smartphone in mid dpi for large screen and then the rendering is good on tablets too; unfortunately this doubles the game size.
I tried to avoid this using the resource alias feature, but it does not work well when the alias and the original resource have a different dpi (this is related only to drawables).
With little games like JaTris this is a viable solution but for bigger ones the only solution is to make different apk for different classes of devices.
This problem will get worse with the arrival of full hd devices :-(
As you can see from the images below JaTris full (designed as JaTris free for 480x800 pixel), supports 600x1024, 720x1280 and 800x1280 modes better than the free counterpart.


However this support has a cost, JaTris is 3Mb while JaTris free is 1.2Mb long.
Some of this space is due to skin system graphics and a little end of game animation but 1.5Mb is due to the replication of sprites for higher resolution screen support.
The problem is the mix of DPI and pixel resolution used by Android system to render graphics.
It works well for smartphones (little screen dimension, with a bunch of pixel resolutions); you ake the graphics for the biggest resolution and let the automatic rescaling do the job for you (it works like a charm).
Unfortunately tablets are different, bigger screens mostly with mid dpi and a bunch of pixel resolutions; the graphics done for smartphones is far too small when rendered on tablets.
The only solution seems to duplicate graphics in high dpi for smartphone in mid dpi for large screen and then the rendering is good on tablets too; unfortunately this doubles the game size.
I tried to avoid this using the resource alias feature, but it does not work well when the alias and the original resource have a different dpi (this is related only to drawables).
With little games like JaTris this is a viable solution but for bigger ones the only solution is to make different apk for different classes of devices.
This problem will get worse with the arrival of full hd devices :-(
JaTris Full released
Released a full (paid) version of JaTris.
Version is aligned to the latest free release (1.41)
Google Play link JaTris full version

Differences from the free version :
- Better support for 600x1024, 720x1280, 800x1280 screen resolutions
- Skin system (4 skins)
- Game difficulty : Choose between EASY,NORMAL and HARD game
- Starting level : For advanced players you can skip the first levels and start from 4th, 7th or 10th level
- Endless game mode (play all 63 levels without worring about strategy).
Below some images showing the skin system graphics :
Version is aligned to the latest free release (1.41)
Google Play link JaTris full version

Differences from the free version :
- Better support for 600x1024, 720x1280, 800x1280 screen resolutions
- Skin system (4 skins)
- Game difficulty : Choose between EASY,NORMAL and HARD game
- Starting level : For advanced players you can skip the first levels and start from 4th, 7th or 10th level
- Endless game mode (play all 63 levels without worring about strategy).
Below some images showing the skin system graphics :
lunedì 26 novembre 2012
JatrisFree 1.41 released
This is a new bugfix release.
Fixed a problem with high score not saved correctly.
Fixed a problem in background music location mainly for Android 4.x device.
Now bgm can reside either on internal or external sdcard and it will be located and played correctly.
Fixed a problem with high score not saved correctly.
Fixed a problem in background music location mainly for Android 4.x device.
Now bgm can reside either on internal or external sdcard and it will be located and played correctly.
venerdì 23 novembre 2012
Found bug on high score save
Problem found in high score system.
When a high score is done in more than one game mode (such as timed and trial, or timed and standard) during the same play session, only the last will be saved.
Probably some overwrite problem.
Working on it.
When a high score is done in more than one game mode (such as timed and trial, or timed and standard) during the same play session, only the last will be saved.
Probably some overwrite problem.
Working on it.
sabato 10 novembre 2012
Background music problem...solved
Added the ability to check for mounted devices and scan them (in read only mode, so no new premission is needed) searching for a jatris/bmg.mp3 file.
If such a file is found then it will be played during game.
It can now reside on internal or external sdcard.
Tested on Android 2.3 and 4.0 with internal or external sdcard.
It seems to work fine, the fix will be included in the next version.
If such a file is found then it will be played during game.
It can now reside on internal or external sdcard.
Tested on Android 2.3 and 4.0 with internal or external sdcard.
It seems to work fine, the fix will be included in the next version.
mercoledì 7 novembre 2012
Problem on background music subsystem
Ok, Jatris does not provide a background music but it can play an mp3 if you put it in a /jatris/bgm.mp3 file on the sdcard.
Tested on Android 2.3 it works flawlessly, but with Android 4.x the mount point of sdcard differs from device to device so Jatris may not find it.
Working on a more general way to identify the sdcard (both internal and external) and check for the presence on the bmg.mp3 file in a jatris directory.
This would solve the problem.
Tested on Android 2.3 it works flawlessly, but with Android 4.x the mount point of sdcard differs from device to device so Jatris may not find it.
Working on a more general way to identify the sdcard (both internal and external) and check for the presence on the bmg.mp3 file in a jatris directory.
This would solve the problem.
domenica 21 ottobre 2012
Jatris Free 1.4 Released
It's time for a new version.
This version contains all the work done to support more display modes (see previous post).
Google play link : [Jatris Free]
New video modes fully supported in version 1.4 :
HDPI 540x960,600x1024
Playable, no graphics errors, but the game area is smaller than the expected :
MDPI 480x640,480x800,540x960,600x1024
JaTris was not designed for tablets even if now it is playable in 720x1280 and 800x1280 but the game area is very small.
Support for MDPI large modes (tipically tablets) is limited due to graphic resolution; to fully solve the problem new graphics must be created and added to the game increasing the size of apk to download and memory usage.
Still thinking if a new apk designed only for high resolution device is a better idea.
This version contains all the work done to support more display modes (see previous post).
Google play link : [Jatris Free]
New video modes fully supported in version 1.4 :
HDPI 540x960,600x1024
Playable, no graphics errors, but the game area is smaller than the expected :
MDPI 480x640,480x800,540x960,600x1024
JaTris was not designed for tablets even if now it is playable in 720x1280 and 800x1280 but the game area is very small.
Support for MDPI large modes (tipically tablets) is limited due to graphic resolution; to fully solve the problem new graphics must be created and added to the game increasing the size of apk to download and memory usage.
Still thinking if a new apk designed only for high resolution device is a better idea.
mercoledì 17 ottobre 2012
Better support for high resolution devices
Worked a lot to reduce graphics problems on high resolution devices stated in the previous post.
Jatris was not designed to work with high resolution devices (it's native resolution is 480x800 or 480x854 with HDPI density ) so it is not possible to optimize it for such devices without graphics redesign (mainly resize).
Anyway it can run a lot better than the current version :-)
The current version supports these resolutions :
LDPI 240x320, 240x400, 240x432
MDPI 320x480
HDPI 480x640, 480x800, 480x854
Upcoming version improved support for resolutions :
MDPI 480x640,540x960,600x1024
These modes represent the worst case scenario for Jatris, as the MDPI density lead to a shrink in all bitmaps; the game area is smaller than the optimal one
(in 600x1024 a lot smaller).
HDPI 540x960,600x1024
These modes are fully playable even if the game area is a bit smaller than the optimal.
HDPI 720x1280,800x1280
Jatris can be played on devices with modes but the user experience is not guaranteed.
Checking if an HD version can be done without recoding the game.
Here the pictures of the improvements in MDPI modes
Left : current version (1.32)
Mid : first attempt
Right : upcoming version (maybe 1.4)
Jatris was not designed to work with high resolution devices (it's native resolution is 480x800 or 480x854 with HDPI density ) so it is not possible to optimize it for such devices without graphics redesign (mainly resize).
Anyway it can run a lot better than the current version :-)
The current version supports these resolutions :
LDPI 240x320, 240x400, 240x432
MDPI 320x480
HDPI 480x640, 480x800, 480x854
Upcoming version improved support for resolutions :
MDPI 480x640,540x960,600x1024
These modes represent the worst case scenario for Jatris, as the MDPI density lead to a shrink in all bitmaps; the game area is smaller than the optimal one
(in 600x1024 a lot smaller).
HDPI 540x960,600x1024
These modes are fully playable even if the game area is a bit smaller than the optimal.
HDPI 720x1280,800x1280
Jatris can be played on devices with modes but the user experience is not guaranteed.
Checking if an HD version can be done without recoding the game.
Here the pictures of the improvements in MDPI modes
Left : current version (1.32)
Mid : first attempt
Right : upcoming version (maybe 1.4)
domenica 14 ottobre 2012
Graphics problems with a class of devices
A lot of problems emerged in graphics rendering on all devices with high resolution but mid dpi such as Galaxy Tab 7.0 and its variants.
Such class of devices has high resolution display (1024x600 and up) but only
mid (160) DPI, so the automatic bitmap resize of Android try to shrink all bitmaps.
The result is a graphical mess :-(
Jatris will continue to work but the graphics in the game area will be affected by size and position problems.
Working to reduce the problem...but probably to avoid it at all it will be necessary to build a new, high resolution only, version of Jatris.
Stay tuned.
Such class of devices has high resolution display (1024x600 and up) but only
mid (160) DPI, so the automatic bitmap resize of Android try to shrink all bitmaps.
The result is a graphical mess :-(
Jatris will continue to work but the graphics in the game area will be affected by size and position problems.
Working to reduce the problem...but probably to avoid it at all it will be necessary to build a new, high resolution only, version of Jatris.
Stay tuned.
giovedì 4 ottobre 2012
Another bug signaled
Another bug report, this one is a null pointer in insert high score panel
java.lang.NullPointerException
at org.aciampal.jatrisfree.JatrisGame.drawInsertHighScore(JatrisGame.java:2634)
at org.aciampal.jatrisfree.JatrisGame.doGamePaint(JatrisGame.java:2250)
at org.aciampal.jatrisfree.Panel.onDraw(JatrisThread.java:153)
at org.aciampal.jatrisfree.Panel$GameThread.run(JatrisThread.java:70)
Not able to reproduce at the moment, will try to modify the code at line 2634 to be more resilient to null pointers :-)
Stay tuned.
java.lang.NullPointerException
at org.aciampal.jatrisfree.JatrisGame.drawInsertHighScore(JatrisGame.java:2634)
at org.aciampal.jatrisfree.JatrisGame.doGamePaint(JatrisGame.java:2250)
at org.aciampal.jatrisfree.Panel.onDraw(JatrisThread.java:153)
at org.aciampal.jatrisfree.Panel$GameThread.run(JatrisThread.java:70)
Not able to reproduce at the moment, will try to modify the code at line 2634 to be more resilient to null pointers :-)
Stay tuned.
mercoledì 26 settembre 2012
Jatris Free 1.32 released
A new bugfix release
Fixed a problem in bitmap usage that could lead to game crash after
(a lot of) pause/resume.
This bug was signaled by a user (thank you).
Google play link : https://play.google.com/store/apps/details?id=org.aciampal.jatrisfree
Fixed a problem in bitmap usage that could lead to game crash after
(a lot of) pause/resume.
This bug was signaled by a user (thank you).
Google play link : https://play.google.com/store/apps/details?id=org.aciampal.jatrisfree
domenica 23 settembre 2012
New bug signaled by user
A new bug was signaled by a user.
Jatris stops with the subsequent error after some (a lot) of pause/resume cycles :
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40558788
at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:325)
at org.aciampal.jatrisfree.JatrisGame.drawImage(JatrisGame.java:2984)
at org.aciampal.jatrisfree.JatrisGame.drawNormalBox(JatrisGame.java:2766)
at org.aciampal.jatrisfree.JatrisGame.drawInterfaceArea(JatrisGame.java:2314)
at org.aciampal.jatrisfree.JatrisGame.doGamePaint(JatrisGame.java:2248)
at org.aciampal.jatrisfree.Panel.onDraw(JatrisThread.java:153)
at org.aciampal.jatrisfree.Panel$GameThread.run(JatrisThread.java:70)
It seems a problem with mismatch usage of a recycled (and not reloaded) bitmap.
Bitmap cleanup was introduced in 1.31 to avoid Out of memory errors due to a non perfect memory deallocation in gc when used with complex resources.
Probably I forgot to cleanup some resource...working on it.
Jatris stops with the subsequent error after some (a lot) of pause/resume cycles :
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40558788
at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:325)
at org.aciampal.jatrisfree.JatrisGame.drawImage(JatrisGame.java:2984)
at org.aciampal.jatrisfree.JatrisGame.drawNormalBox(JatrisGame.java:2766)
at org.aciampal.jatrisfree.JatrisGame.drawInterfaceArea(JatrisGame.java:2314)
at org.aciampal.jatrisfree.JatrisGame.doGamePaint(JatrisGame.java:2248)
at org.aciampal.jatrisfree.Panel.onDraw(JatrisThread.java:153)
at org.aciampal.jatrisfree.Panel$GameThread.run(JatrisThread.java:70)
It seems a problem with mismatch usage of a recycled (and not reloaded) bitmap.
Bitmap cleanup was introduced in 1.31 to avoid Out of memory errors due to a non perfect memory deallocation in gc when used with complex resources.
Probably I forgot to cleanup some resource...working on it.
giovedì 16 agosto 2012
Jatris Free 1.31 released
As stated in previous posts a new version of Jatris free is now available on Google Play.
This version is a bugfix release only.
Fixes :
Fixed a memory leak that could lead to crashes (OutOfMemory errors).
Fixed a race condition that could lead to game freeze after pause/resume cycle
This version is a bugfix release only.
Fixes :
Fixed a memory leak that could lead to crashes (OutOfMemory errors).
Fixed a race condition that could lead to game freeze after pause/resume cycle
mercoledì 1 agosto 2012
Memory leak...solved
Solved the memory leak problem mentioned in the previous post.
It seems that not only bitmaps but also drawables and soundpool objects are not correctly freed after an OnDestroy call (normally when user press back button).
Added a cleanup routine to recycle these objects manually.
Now memory errors are vanished.
A new version will be packaged to solve the problem.
It seems that not only bitmaps but also drawables and soundpool objects are not correctly freed after an OnDestroy call (normally when user press back button).
Added a cleanup routine to recycle these objects manually.
Now memory errors are vanished.
A new version will be packaged to solve the problem.
Iscriviti a:
Post (Atom)




