enpu

Panda Engine 2 development

300 posts in this topic

EDIT:

Current Panda v2 docs:

http://ekelokorpi.github.io/panda.js-site/engine/docs/

Playground:

http://ekelokorpi.github.io/panda.js-site/engine/playground/

 

 

 

So, next version is not going to be 1.14.0, because there are big changes coming, this is going to be the first major update, 2.0!

 

One of the biggest thing, i have gone through all Pixi.js source code and cleaned everything, fixed some bugs and removed lots of useless stuff, so it's like lite version of Pixi, customized just for Panda. I have also converted all classes to use the same class inheritance as other Panda classes, so that means you can extend and inject from all Pixi classes, this will make things a lot simpler and cleaner. Also loader and interaction are rewritten and separated from renderer.

 

Also the engine has been renamed to Panda Engine, because there are going to be more Panda.js products coming.

Like Panda Editor and Panda Launcher, i will write more about those once they are nearly ready.

 

Some other things that have already been done:

 

- Every property, method and attribute on every class are now documented and private ones are renamed to start with underscore

- Don't have to use addObject anymore. Every class that has update function, is automatically added to scene, when you create new instance of it.

- Don't have to call this.super(); on scene's update function anymore.

- You can change scene's update order (physics, objects, tweens, timers etc.)

- Lots of small changes and improvements

 

I'm hoping to release Panda Engine 2.0, Panda Editor 1.0 and new website all together in few months.

Share this post


Link to post
Share on other sites

Sounds great! can't wait to play with it.

I would also like to hear what are the plans for Pixi 3 when it is released.

 

Thank you for all the good work you put into this.

Share this post


Link to post
Share on other sites

Yep no Pixi 3 there, i tried it, then considered to make my own renderer, mainly for same reasons as Rich on Phaser.

But then decided to make customized version of Pixi 2, and the more i got through the code, the more i found things

that are really not needed on game engine, in my opinion. I'm pretty happy with it right now, still few things need to be implemented,

and i'm going to release some features as plugins, like Spine support.

 

So in Panda v2 you will be able to do things like this:

game.createClass('MySprite', 'Sprite', {    init: function() {        this.position.set(100, 100);    },    update: function() {        this.rotation += 1 * game.system.delta;    }});var sprite = new game.MySprite('panda.png');

Pretty clean i think!

Share this post


Link to post
Share on other sites

Sounds absolutely awesome! I can't wait :)

 

Thank you for the awesome engine!!

 

PS. Can we please have hires support for Spine animations?

Share this post


Link to post
Share on other sites

Yep no Pixi 3 there, i tried it, then considered to make my own renderer, mainly for same reasons as Rich on Phaser.

But then decided to make customized version of Pixi 2, and the more i got through the code, the more i found things

that are really not needed on game engine, in my opinion. I'm pretty happy with it right now, still few things need to be implemented,

and i'm going to release some features as plugins, like Spine support.

 

So in Panda v2 you will be able to do things like this:

game.createClass('MySprite', 'Sprite', {    init: function() {        this.position.set(100, 100);    },    update: function() {        this.rotation += 1 * game.system.delta;    }});var sprite = new game.MySprite('panda.png');

Pretty clean i think!

Definitely. it feels more intuitive this way.

You don't think the improved rendering performance that comes with pixi v3 is worthwhile?

Share this post


Link to post
Share on other sites

Enpu you're the best, I've been watching the awesome progress for weeks. Now I cannot wait any more. Can you tell us when will the develop branch ready to use?

 

Also curious about why you create the renderer based on v2 instead of v3 which sounds like faster?

Share this post


Link to post
Share on other sites

Yep no Pixi 3 there, i tried it, then considered to make my own renderer, mainly for same reasons as Rich on Phaser.

But then decided to make customized version of Pixi 2, and the more i got through the code, the more i found things

that are really not needed on game engine, in my opinion. I'm pretty happy with it right now, still few things need to be implemented,

 

Sounds like exactly the same conclusions and actions I came to with Phaser 2.3 :) so I understand completely! There's a lot of stuff that can be removed isn't there (which to be fair to them is partly what Pixi 3 was all about).

 

From what I've tested I don't believe there are any significant speed increases in Pixi 3 over Pixi 2. However there are lots of bug fixes which never made it into the Pixi 2 branch, which is the only part that worries me a little. So I've been manually applying my own fixes, back porting code, etc and it's working ok so far.

 

I could have gone all-in with Pixi 3 (in Phaser 2) but it's still unstable and I had to trade the cost of doing that vs. rewriting Phaser 2 from scratch to support their module format. It just didn't weigh up for me. I'm guessing you came to a similar conclusion (although the module part would be less of an issue for you of course).

 

Good luck with Panda 2!

Share this post


Link to post
Share on other sites

Thanks Rich!

 

Here is first preview video of Panda Editor / Launcher combination. I'm pretty excited about it, because it's really makes your work faster and easier, especially when working with mobile devices. I got about 10 devices (iOS, Android and Windows Phone) on my desk, all connected into the same project, and i can see changes instantly on every device as i change the code in the editor. It's way faster than other livereloaders, because they usually just reload the whole page, but Panda Editor knows exactly what module and class you have changed, and then sends the info to the devices, and they just load the new files that are changed and then relaunches the scene, and it's super fast! Also you can control and see all devices in your editor, and reload any specific one if needed.

 

Also debugging is so much easier, you got console in your editor and every device sends their errors to the editor, and you can see exactly what device sent the error and what file and line number etc. You can also see visually from the device that it got error. The editor also highlights the error, if it occurs in the game code.

 

OttoRobba, drhayes and Ninjadoodle like this

Share this post


Link to post
Share on other sites

@enpu - btw just a friendly heads-up that Pixi 2 is MIT, so you still need to include the copyright / author notice in the source (I saw you had stripped that all out in the Panda 2 dev branch, legally it needs to be put back)

Share this post


Link to post
Share on other sites

You could read it either way really: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."

 

Personally I just think it's good form. It's a single line of text. Not exactly going to rock the boat.

 

Your call though.

Share this post


Link to post
Share on other sites

Really interesting changes, will definitely make development with Panda faster :)

Great wokr Enpu!

Share this post


Link to post
Share on other sites

Looking cool!

 

Are you going to have a custom wrapper then, or will you still be relying on cocoon js for mobile?

Share this post


Link to post
Share on other sites
I do not speak much English, but in truth this great achievement so see you've developed, but I think for this new version, and you implement several changes, you can document a little more, that would be great for the transition in the change expect to see.

 

The other does not but think your implementation of the new Javascript to Version 6 change much in the way of programming this game engine Panda?

 

Is that I've put some reading this new example's implementation when lanze of JS6 and good for me I think it would change many game engines currently on the market.

Share this post


Link to post
Share on other sites

@enpu I am very excited about the upcoming release of the new and shining Panda Engine 2.0.0! You wrote that you are planning to release this new version in the next few months. Do you think that it's possible to finish the new version until the end of the summer? Or should we better expect a release at autumn, or at the end of the year?  

Share this post


Link to post
Share on other sites

Looking cool!

 

Are you going to have a custom wrapper then, or will you still be relying on cocoon js for mobile?

 

Panda Launcher is made using PhoneGap, so mainly that is supported, but also CocoonJS.

Share this post


Link to post
Share on other sites

@enpu I am very excited about the upcoming release of the new and shining Panda Engine 2.0.0! You wrote that you are planning to release this new version in the next few months. Do you think that it's possible to finish the new version until the end of the summer? Or should we better expect a release at autumn, or at the end of the year?  

 

I'm doing my best to release it asap :)

Share this post


Link to post
Share on other sites

Some new things implemented:

 

- Play animation in reverse

- Play animation in random order

- Define animation speed in frames per second

- There is now anchor point in every display object (Container, Text etc.)

- Anchor point is now defined in pixels rather than percent

Share this post


Link to post
Share on other sites

Ah, sorry for that. What I mean is like how Phaser.Sprite does, here's a example:

var myAnim = new game.Animation(frames);myAnim.addAnim('walk', [2, 3, 4, 5]);myAnim.play('walk');

Well, I think addAnim is not a good name here, replace it with define:

var myAnim = new game.Animation(frames);myAnim.define('walk', [2, 3, 4, 5]);myAnim.play('walk');
ThanosS likes this

Share this post


Link to post
Share on other sites
On 8/4/2015 at 4:41 PM, PixelPicoSean said:

 

Ah, sorry for that. What I mean is like how Phaser.Sprite does, here's a example:


var myAnim = new game.Animation(frames);
myAnim.addAnim('walk', [2, 3, 4, 5]);
myAnim.play('walk');

var myAnim = new game.Animation(frames);myAnim.addAnim('walk', [2, 3, 4, 5]);myAnim.play('walk');

 

Yeah should be cool ! + animations defined by a .json file. !

Example:

{
	"walk": {
		// Base path: media/
		"sprites/player-walk-01.png",
		"sprites/player-walk-02.png",
		"sprites/player-walk-03.png",
		"sprites/player-walk-04.png",
		"sprites/player-walk-05.png"
	},
	"run": {
		// Base path: media/
		"sprites/player-run-01.png",
		"sprites/player-run-02.png",
		"sprites/player-run-03.png",
		"sprites/player-run-04.png",
		"sprites/player-run-05.png"
	}
}
{  "walk":  {    // Base path: media/    "sprites/player-walk-01.png",    "sprites/player-walk-02.png",    "sprites/player-walk-03.png",    "sprites/player-walk-04.png",    "sprites/player-walk-05.png"  },  "run":  {    // Base path: media/    "sprites/player-run-01.png",    "sprites/player-run-02.png",    "sprites/player-run-03.png",    "sprites/player-run-04.png",    "sprites/player-run-05.png"  }}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.