Hello, I’m Nick, you maybe heard from me on the github issues.

To sum up my situation:

I’m working on a as3 3D game, it’s a about 40k line (without external libs).
The two situations I’m willing to use royale-asjs are:
1. port / duplicate the game logic to my node.js server
2. port the whole game to js for a html5/webgl release.

I was able to successfully port my game logic to node.js (5k lines, no 
graphics), but it was not without pain.



Getting started with royale:
====================

https://royale.apache.org/getting-started/

This getting started is simply terrible for me, 
"Follow the instructions for your IDE to create your first “Hello World” 
application.”, I’m a terminal, vim, Makefile user, kinda feel left out there.
Before installing anything on a computer, or even start a program, I can be 
nice to just see few command line on how it works.

This is what I would expect to pop in my face when I open any get-started / 
quick-start page:
- few command line to download a build of royale and get something work with 
the terminal in 30s without any other dependancy than apache-royale and a 
simple as3 project.
- maybe a simple intro video for IDE users (so you can see someone using it 
without moving an inch).

As soon as I reach your github page, i’m offered to get royale, and to build it 
… 

And then I click the Wiki tab, which is again proposing me to build before 
royale anything, then offers me IDE support again, and  … HEYYYYY finally a bit 
of code to use the product and smth for maven users. 
Although, even if i can use maven, I prefer using direct command line via a 
Makefile (xml makes my eyes bleed).

Good thing I heard from and tried apache royale from this repo: 
https://github.com/openfl/openfl-samples-as3, because else I can assure I would 
not have even tried to run it.



Porting game logic to Node.js
=======================

Here is a part of my command line (i removed several Constants):
//``` bash
MXMLJSC
+royalelib=[…]/node_modules/@apache-royale/royale-js/royale-asjs/frameworks
+configname=js
--debug=true
--output=./
--html-template=template.html
--source-path+=src
--define+=CONFIG::DEBUG,true
--define+=CONFIG::DEBUG_NS,*
--warn-public-vars=false
--remove-circulars=false
--targets=js
src/Main.as


Compilation Errors:
-------------------------
1.Conditional compilation issue:
/Users/igor/dev/openfl/wmg-battle-export/tests/src/io/nfg/core/Tools.as(96): 
col: 12 Error: Can not resolve config constant: ‘DEBUG'

{ "name": "CONFIG::DEBUG_NS", "value": "*"},
"additionalOptions": "-define=CONFIG:DEBUG_NS,'*’",

This is most probably not a royale bug, but Josh Tynjala's asconfig that is 
parsing quote and double quote out
(Before I used a Makefile, i started with openfl example which was using 
asconfig, i’m still putting it here as someone might find this useful … maybe)

2. Getting an Error on toJSON
AModel.as(70):col: 21 Error: Overriding a function that is not marked for 
override

My AModel class inherits a homeMade event dispatcher with no toJSON function, 
so nothing to override.
(I still tried to override it, but when compiling it in as3, I get an error 
that i’m trying to override something that doesn’t exists)


Runtime Errors:
---------------------
1. "ReferenceError: uint is not defined”, "ReferenceError: int is not defined”
// ```as3 from code like:
type = { id: String, age: uint, variation: int }


2.Vector are inconsistently replaced by Array
example:
// ```as3
if(key == 'deck' && (value is Vector.<DeckUnit>) == false) value = 
initDeck(value);

// generated by royale:
- if (key == 'deck' && org.apache.royale.utils.Language.is(value, Array) == 
false)

// after my fix:
+ if (key == 'deck' && org.apache.royale.utils.Language.is(value, 
org.apache.royale.utils.Language.Vector) == false)


3. Native flash.utils flash.utils.* (Dictionnary, getQualifiedClassName, …) and 
flash.geom (Points, Rectangle) are ignored by compiler (doesn’t exists in js)
However those types are everywhere in as3 applications, and Dictionary for 
example is a Native type in most lang.
Fix: For the browser build (not node.js), there is a simple obvious solution: 
openfl.swc
However for node.js, openfl comes packed with js graphic feature that doesn’t 
exists in node which as it is, is not usable by node.
As a solution, it could be trimming openfl to create a openfl-nodejs or add it 
to royale org.apache.royale.utils.Dictionary.
Note also that there is no info about openfl in royale, so it wouldn’t occur as 
a natural answer for everyone.


Other thoughs:
===========
I’m not sure why you asked me to join the devlist.
I already received 4 mail that i have no interest in, and even I could turn off 
notification, what’s the point of coming to a mailing list for just one thread.
When I think of it, i could have wrote my story on github or some forum.
Although I will give you more feedback if I can, I have no intention in getting 
involved deeper than that (as making a game already taking too much time).

Reply via email to