==== Wording ====
 
==== Wording ====
   −
In the following sections, i'm going to use AE for jPCT-AE and jPCT for desktop jPCT.
+
In the following sections, i'm going to use AE for [http://www.jpct.net/jpct-ae jPCT-AE] and jPCT for desktop [http://www.jpct.net jPCT].
       
* there's no procs nor threading package in AE.
 
* there's no procs nor threading package in AE.
 
* the util package is there, but it contains less classes. The Light class has moved into the main package and it's now the default way of creating lights in AE.
 
* the util package is there, but it contains less classes. The Light class has moved into the main package and it's now the default way of creating lights in AE.
* the methods to work with lights in World are all gone in AE. Use the Lights class instead.
+
* the methods to work with lights in World are all gone in AE. Use the Light class instead.
 
* software and hybrid hardware mode are gone. AE uses compiled objects only.
 
* software and hybrid hardware mode are gone. AE uses compiled objects only.
 
* there's no need to explicitly compile an Object3D, AE does this automagically. However, there is a method in World to compile all objects in the world that desktop jPCT doesn't have.
 
* there's no need to explicitly compile an Object3D, AE does this automagically. However, there is a method in World to compile all objects in the world that desktop jPCT doesn't have.
    
AE provides the 3D engine only. It doesn't provide any Activity example or framework for Android. You'll find some example code on [http://www.jpct.net/jpct-ae/ the AE-homepage]. So porting from jPCT to AE means to port from your native OpenGL window or AWT/Swing component with its key and mouse polling and/or listeners to an Android Activity...and vice versa.
 
AE provides the 3D engine only. It doesn't provide any Activity example or framework for Android. You'll find some example code on [http://www.jpct.net/jpct-ae/ the AE-homepage]. So porting from jPCT to AE means to port from your native OpenGL window or AWT/Swing component with its key and mouse polling and/or listeners to an Android Activity...and vice versa.
To ease porting, I suggest to use the Lights class for managing lights in jPCT, not the methods in World. That way, you can simply port those sections by changing the import only (because the Lights class has moved from util into the main package). It's cleaner that way anyway...
+
To ease porting, I suggest to use the Light class for managing lights in jPCT, not the methods in World. That way, you can simply port those sections by changing the import only (because the Light class has moved from util into the main package). It's cleaner that way anyway...
    
==== Performance and memory issues, serialized objects ====
 
==== Performance and memory issues, serialized objects ====
   −
On the desktop, memory and performance are to spare...at least to a degree. On Android, this isn't the case. Remember that you have to work with a max memory of 16mb...and coming close to that border isn't really fun, so you should plan to use some mb less. CPU power is limited too and many phones don't even have a FPU, meaning that all the floating point calculations are done in software emulation mode.
+
On the desktop, memory and performance are to spare...at least to a degree. On Android, this isn't the case. Remember that you have to work with a max memory of 16mb on older devices...and coming close to that border isn't really fun, so you should plan to use some mb less. CPU power is limited too and some older phones don't even have a FPU, meaning that all the floating point calculations are done in software emulation mode.
   Unexpected non-MediaWiki exception encountered, of type "Error"
[7d45f6eb] /wiki/index.php?title=Differences_between_jPCT_and_jPCT-AE&diff=633&oldid=388 Exception from line 436 of /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php: Call to undefined function each()
Backtrace:
#0 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(546): DiffEngine->diag(integer, integer, integer, integer, integer)
#1 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(347): DiffEngine->compareSeq(integer, integer, integer, integer)
#2 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(228): DiffEngine->diffLocal(array, array)
#3 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(725): DiffEngine->diff(array, array)
#4 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(864): Diff->__construct(array, array)
#5 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DairikiDiff.php(987): MappedDiff->__construct(array, array, array, array)
#6 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/TableDiffFormatter.php(193): WordLevelDiff->__construct(array, array)
#7 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DiffFormatter.php(143): TableDiffFormatter->changed(array, array)
#8 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DiffFormatter.php(83): DiffFormatter->block(integer, integer, integer, integer, array)
#9 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(939): DiffFormatter->format(Diff)
#10 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(844): DifferenceEngine->textDiff(string, string)
#11 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(860): DifferenceEngine->{closure}()
#12 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(813): DifferenceEngine->generateTextDiffBody(string, string)
#13 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(743): DifferenceEngine->generateContentDiffBody(WikitextContent, WikitextContent)
#14 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(665): DifferenceEngine->getDiffBody()
#15 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(635): DifferenceEngine->getDiff(string, string, string)
#16 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/diff/DifferenceEngine.php(443): DifferenceEngine->showDiff(string, string, string)
#17 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Article.php(826): DifferenceEngine->showDiffPage(boolean)
#18 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Article.php(549): Article->showDiffPage()
#19 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/actions/ViewAction.php(44): Article->view()
#20 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Wiki.php(487): ViewAction->show()
#21 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Wiki.php(285): MediaWiki->performAction(Article, Title)
#22 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Wiki.php(647): MediaWiki->performRequest()
#23 /zstore/backups/cn10/home/ws10522/public_html/wiki/includes/Wiki.php(506): MediaWiki->main()
#24 /zstore/backups/cn10/home/ws10522/public_html/wiki/index.php(48): MediaWiki->run()
#25 {main}