Jump to content

The Phaser 3 Wishlist Thread :)


rich
 Share

Recommended Posts

@rich

 

what's your phaser wishlist? doesn't have to be phaser 3, just phaser in general.

 

also do you have any plans on finding or creating an alternative to pixi so that phaser isn't tied down

and is able to move forward?

Link to comment
Share on other sites

I have no intention of replacing Pixi. I don't believe there is any better alternative out there at the moment. Mat and I were talking the other day about having a "Pixi/Phaser Week" where we get together and just code solidly for a week, adding in new features and planning things out for the year to come. This is likely to happen October time and will let us address things like multiple camera support and virtual stages.

 

Here is what's in development already:

 

1) Path Manager. A really lovely and comprehensive path system. You can create beautiful paths for sprites to follow, with all kinds of options like branching paths, yoyo, orientate to path, easing methods, etc. It's super powerful and will make creating interesting waveforms a breeze. This is actually fully complete (including a basic editor) but I'm as-yet undecided what to do with it. It was always intended to be a commercial plugin, but I've yet to decide for certain.

 

2) New Particle System. This is about 70% complete and is honestly quite stunning already. Really powerful particle effects, all kinds of renderer options, lovely graph based system and again a basic editor done already too. As with the Path Manager the commercial status of this is undecided at this time. It will be finished early August though.

 

3) New Loader system. Allows for asset bundles, better CORs handling, easy file type parsing and extension, parallel loading, json configs and some other nice features. This will be a free upgrade rolled into a future release.

 

As an aside from those, here are features I want added to Phaser (either as part of the core, as a component, as a plugin - whatever really. Some may be commercial, some free, all undecided atm).

 

1) New Tilemap system that uses a RenderTexture not BitmapData. Also shader based Tilemap renderer for WebGL. Support for animated tiles and sloped tiles in the core.

 

2) Un-hook the core game loop from the render loop, so they can operate at independent frame rates. Update ArcadePhysics to take advantage of this (will help tunnelling delta timer issues on mobile a lot).

 

3) Multiple Cameras (more of a Pixi limitation than anything, but there are potentially a few ways around it - see first comment)

 

4) Box2D Support + RUBE Loader.

 

5) Virtual Stage system with Alignment and Grid helpers - so you can create games that scale to the window size and align Sprites easily without having to use exact pixel coordinates.

 

6) New BitmapText handler that doesn't spawn a Sprite for every single letter of the text! Also better font parsing / json support.

 

7) Parallel State support (this is coming v. soon anyway)

 

8) Enough hooks and access to make network support easy to add (without actually doing it all for you at this stage)

 

9) Support for packaged formats (node-webkit, Steam API, better Cocoon support, FFOS, Wii U, etc - each of these needs evaluating on their own)

 

That's the bread and butter stuff, but here is where it gets interesting ... the following is the sort of stuff I believe a GAME framework should contain as well:

 

Easy game level data management tools: for example a Character Manager, Inventory Manager, Room Manager, Object Manager, Weapon Manager, etc.

 

Generic enough to be useful for all genres of game, but comprehensive enough to be a real turbo boost for more beginner developers (or just those doing rapid builds like in game jams) and extensible enough for advanced devs too.

 

Most frameworks focus too much on just the visuals - sprites, text, tilemaps, etc and leave all of the data management entirely up to the developer. Which is ok in lots of cases, but is also a real oversight imho. It's hard for me to explain fully, but I'll describe it with some code examples when it gets to that stage. It's features at this level that will make the real difference imho. Something to focus on when the core is nicely enhanced anyway.

Link to comment
Share on other sites

 

3) New Loader system. Allows for asset bundles, better CORs handling, easy file type parsing and extension, parallel loading, json configs and some other nice features. This will be a free upgrade rolled into a future release.

 

Filetype detection not based on fileextension would be really nice (maybe even before version 3?). I have random named assets without file extension and need to comment out the file extension check in the moment.

Link to comment
Share on other sites

Phaser doesn't use file extensions for loading. If you say "load this image" and give it an mp3 file, it will still try to load it as an image (and fail of course). The only place it uses an extension is in Loader.getAudioURL to determine if the audio file format is supported by the device, so it knows which audio file to load from the array given. I guess that could be overridden in the Loader.audio method, i.e. you tell it to skip the check and it just loads the first file it comes across - because it's impossible to know otherwise which file to use.

 

Add it to github as a feature request. It's easy enough to support somehow. You'll give-up the ability for it to automatically swap to a file-type it knows it can play in the process, but this is an edge-case anyway so that's up to you to solve in your loading code :)

Link to comment
Share on other sites

@rich

 

On the topic of 'magic' objects, the big advantage I see is clarity of intent. If I have to look at some older code, having the english descriptors helps a lot. It also helps when working with others - not everybody is gonna be equally experienced in all parts of the framework.

Link to comment
Share on other sites

For me the most important wishlist item is improved scaling to fit mobile screens. What I'd like is something which:

 

- Scales to fit any size browser, with the option to fill the screen if wanted

- Can keep the aspect ratio without squashing

- Can dynamically resize if the user rotates the device

 

Once this is done it would be nice to be able to import vector graphics and animations from SVG and/or Flash.

You'd import the vectors at the start, render them according to the screen size and then use bitmaps during the game.

Link to comment
Share on other sites

Audio panning and filters, resonance, reverb etc. Or maybe some midi sequencer =D  (just wild thoughts)

 

phaser is a game engine not a DAW :P even if these features were implemented into phaser, it would still be easier and quicker to use dedicated audio editing software

 

edit: if phaser had a GUI, audio editing would be awesome but it would probably be low priority on the to do list

Link to comment
Share on other sites

phaser is a game engine not a DAW :P even if these features were implemented into phaser, it would still be easier and quicker to use dedicated audio editing software

 

edit: if phaser had a GUI, audio editing would be awesome but it would probably be low priority on the to do list

 

And you 'could' pre-render all your visual content too with a video editing software...

 

Audio is an important part of interactive media... and dynamic audio is important for games. At least stereo proximity calculations...

 

(edit) sorry, what I'm talking about are rather features to lower the traffic (since the audio still takes quite a lot).

Stuff like the trackers (chiptune) but with more modern features. Like 16 slots for single wave files that you can then trigger, pitchbend and maybe add delays. (No idea what would be a good standard but I thought I'd throw the idea out there)... maybe even some kind of built in software synth, like sfxr ... dreaming... and sure the editing/composing should be done with some midi tool or a DAW of course...

 

Reverbs get interesting when you like enter caves and stuff... overall, dynamic audio features.

Link to comment
Share on other sites

- Scales to fit any size browser, with the option to fill the screen if wanted

- Can keep the aspect ratio without squashing

- Can dynamically resize if the user rotates the device

THIS!

 

In my opinion this is the only scaling mode that looks professional (black borders? not even accepted by most sponsors anymore; stretching assets? horrible), I hate the fact I need to hack around Phaser just to get this working. It's really the only thing about Phaser that I dislike.

Link to comment
Share on other sites

And you 'could' pre-render all your visual content too with a video editing software...

 

Audio is an important part of interactive media... and dynamic audio is important for games. At least stereo proximity calculations...

 

(edit) sorry, what I'm talking about are rather features to lower the traffic (since the audio still takes quite a lot).

Stuff like the trackers (chiptune) but with more modern features. Like 16 slots for single wave files that you can then trigger, pitchbend and maybe add delays. (No idea what would be a good standard but I thought I'd throw the idea out there)... maybe even some kind of built in software synth, like sfxr ... dreaming... and sure the editing/composing should be done with some midi tool or a DAW of course...

 

Reverbs get interesting when you like enter caves and stuff... overall, dynamic audio features.

 

if you reckon editing audio using code is more efficient than using dedicated audio editing software, then please teach me how

Link to comment
Share on other sites

if you reckon editing audio using code is more efficient than using dedicated audio editing software, then please teach me how

 

Hi - it would be the dynamic modification of audio rather than loading multiple individual sounds that have destructive "effects" on them.

 

http://www.html5gamedevs.com/topic/7488-simple-powerful-webaudio-with-wadjs/ for example is one way you might do it.

 

The equivalent is that in a DAW, you might have VST (or whatever other type) plugins that you can non-destructively layer on your tracks, as well as things like panning, volume, and equalization.

 

For example, if you had a static screen and you wanted the sound to pan left to right when someone was on the left or right, and then when you shoot a fizzing rocket from left to right, that moved as well, it is doable with destructively edited "pan" sounds, one for each area. But it would be way simpler if based on the X/Y position you simply had a pan control to your audio. And then if the rocket hits something in a cave versus in the open air, you might have reverb effects applied dynamically.

 

There are many other examples of game engines that have directional audio or effects applied and layered on audio rather than recording each sound individually.

 

Don't think of it as audio editing/manipulation in the sense of a human modifying it, think of it as context and code driven audio effects.

 

You wouldn't record each "volume" of a sound as separate audio files, you'd use phasers volume functionality.

Link to comment
Share on other sites

I agree with some the WebAudio talk too. However, I'm also of the opinion some of the more advanced features would probably work best as plugins. Or, best case, finding a similarly licensed library to optionally include that would hook into Phaser's API.

 

I'm also up-voting, as it were, better packaging support. Being able to detect if Phaser is running under node-webkit, Apache Cordova, PhoneGap, CocoonJS, or something else and changing its settings to match could be improved. Admittedly, it's gotten much better this year, but it's still got a long way to go for some platforms.

 

And, finally, if we are asking for things to be put on a wishlist, I'd like to ask for a re-working of Debug.

  • For every primary game object, there should be a corresponding game.debug call that lists its information.
  • A decision to either follow the naming convention of game.debug.object or, as are some things now, game.debug.objectInfo for displaying information.
Link to comment
Share on other sites

Please note: I am just starting to develop on Phaser.

 

After reading through all of the posts on this thread, I reccomend tightening down Phaser's core and really just making Phaser render the canvas and have accept api calls to the small core.  Then everything else would be a plugin (tweening, audio, preloading, ect...).  But of course having these said plugins already included in a basic template, but if I want to use or develop a diffent tween plugin I can easily remove the default plugin and add the new one without the overhead of the original. 

 

This can also help if someone wants to integrate something like three.js into Phaser.  It could be like programming legos of sorts.

 

As I see it now Phaser is like AngularJs or Jquery, Handles most problems, but can be extended with plugins for added functionality.

 

What I am reccomending is more like backbonejs,  a small core that supports plugins and to get started you need some of them (mustache js, and jquery) but they can be easily switched out for replacements.

 

The pros to this is a smaller lighter core that the end-developer can define how big it is, and only use what they need.  And also can creat a more innovative community

 

The cons I can see is fragmentation.  As a Linux user I deal with that all day long. 

Link to comment
Share on other sites

Hi,

 

I just want to point out that ES6 can be used right now. I am actually using it in a Phaser game I am developing. There are so called "transpilers" that can rewrite my ES6 code into ES5 compatible code at build time. X years from now on, when ES6 will be supported by all browsers this transpile step won't be needed anymore but there's nothing preventing you from writing ES6 code right now.

There are so many goodies in ES6 that it's a shame not to use them. I haven't tried to wrap my ES6-to-ES5 game with cocoonjs yet to see if there is any issue but the game runs great in all browsers I tested with (desktop and mobile).

Major js frameworks are already going full ES6 with transpilation to ES5 as an optional build step.

I don't think using ES6 for Phaser's code will benefit Phaser users very much but it'll make Phaser more modular and will simplify some patterns.

 

On Promises: They have already started going native in browsers. Latest Chrome for sure, probably latest Opera as well. The rest will follow eventually, if they haven't already so it's something pretty solid to rely on.

Personally I use them very much for my day work and they're incredibly useful. Especially when you have no idea if the object that has to return the promise is synchronous or asynchronous, already finished or not started or ongoing.

So +1 from me for implementing promises in Phaser wherever possible.

Link to comment
Share on other sites

  • rich unpinned this topic
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...