enpu

Panda 2 development

Recommended Posts

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.

 

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

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

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

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.

 

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
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');

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.