In my month or two of using Impact on a day-to-day basis i've had a few a ideas of things that I think could really help expand it. So here's a thread devoted to our collective wish-list of things you'd love to see added to Impact and possible plugin requests.
The aim of this thread isn't to point out what's wrong with Impact, but to simply have all our suggestions in one easy to read place so they can be tracked and shared.
Try to keep posts on topic and sensible.
If you're filling a plugin request, link to the plugins post in the Code topic.
A more manageable way of building menus for our games.
An easier way to include a pausing mechanic to our games. With a few options like windowBlur pausing and keyPress pausing. Having this as a plugin or part of Impact would be a nice touch.
Text in impact (and canvas in general) is still a little lacking in terms of capability I think. Something that lets us define a text-box and have the text automatically wrap to that box and take into account a line-height parameter too would rock.
In my time using Flixel, one of the best things about it was the automatic inclusion of volume controls. Something like that would be quite helpful. Doing it manually is possible enough, but still a plugin to handle it would be great. In some cases there would be SFX and music volume to consider, so maybe a volume control should just be a master controller.
I've got a Tween extension almost completed that allows you to create animations programmatically in code and visually in Weltmeister. Right now you can tween any object property, deep or shallow, to a final absolute value. I'm working on incremental tweens as well as non-numeric tweens (i.e. colors) and will probably look to jQuery's implementation for guidance on that front. I've also adapted Dom's EntityTrigger as an EntityTweenTrigger class to fire off specific animations when an object collides with the trigger. Tweening non-entities is possible in WM through an EntityObjectProxy instance, or programmatically with the original object. I've got quite a few classic tweening algorithms, mostly from good old Robert Penner's implementations. There's support for callbacks in code, but no way to set them in WM currently. Tweens can be previewed from within WM as long as they operate on a property that is visible in the editor (ig.game.screen.y, pos.x, currentAnim.alpha, etc). I'm not sure how easily this could be implemented as a stand-alone plugin as portions had to be pretty heavily integrated into the main Weltmeister code.
In a game I'm working on I have a few scripted cut scenes and mini-levels that all take place on the same huge map. It didn't make sense to reload the entire map and handle scrolling the screen back to its previous location whenever I wanted to load level (for its new entities). Instead I added a
loadSupplementaryLevel method to my game, which adds the levels entities to the currently loaded level. I feel like there are a number of situations where this would be pretty helpful if included in Impact core.
I'm using something similar to the Menu Manager mentioned above, but my implementation doesn't handle menus yet, only alerts. I altered my game loop to only update entities and background maps if there is not a modal showing. My tweens also automatically pause themselves if there's a modal showing, so animations resume when the modal is closed. That might not be desired behaviour in all cases, though. I used the original Final Fantasy as the inspiration for my otherwise uninspired plain blue box dialogs, but constructing the border and fill with tiles would probably be a better idea.
We've all got em, but they could all probably use some improvement. It'd be very nice to see a more consistent approach to game state management, possibly as an official class that's minimal enough to fit most requirements but remains extensible for advanced usage. I like the idea of a state machine with event triggers and/or callbacks to switch to and from each state. Right now I usually end up with way too much game logic in my
update method. I need to re-read an article in an old Game Programming Gems I remember that seemed to really nail the implementation of an elegant state machine before re-approaching this myself. More game-centric developers may have valuable insight here.
1 decade ago
I have three plugins in progress right now. I want to get them to a minimally working state before I put them up on Github (where other good people can help fix the bugs).
I have a pause/unpause plugin in progress that will dim the game and write "PAUSED" in the middle of the screen when you press your assigned "pause" input. Hitting the input again unpauses.
I also have a state machine that I wrote that I've been meaning to turn into a plugin. Right now I include it as an external JS file. I've yet to see what it'd take to turn into a plugin, but I doubt it'd be too tricky. It'll fire events when entering and exiting a state, as well as let you define state machine specific events. I may remove the latter, as I find I never use it.
In the meantime, I'm working on a plugin that will allow you to integrate Processing.js. That's been a lot of fun (I've been playing with Flocks, for example). I'm just working through some quirks. Should have it up within a few days.
1 decade ago
I just saw the idea for a "debug handler" as well - I have something that I've been using with my state machine that'll write all the "entering StateA from StateB" events into an HTML table. I should abstract that for use as a general debug message console thing. Adding it to the list...
Related to all these, I think impact would do well to implement some more helpers around the .game's .draw() and .update() methods. Specifically, the ability to define groups of entities and quickly control their draw and update loops. I think this is apart from (though highly useful in concert with) a state engine.
In general, there are some cases where you might want to suspend .draw() and .update() and run a sub loop (options screen, Help?), suspend .update() but keep .draw() (pause), or even keep doing .update() to a group of entities while you .draw() other entities (equipment loadouts in a multiplayer game that keeps running regardless of whether you are playing).
Right now, when I look at game-state implementations, such as YOSS, it looks like the author does some tests and sets the game-state in .update() and then, depending on the state, either proceeds with the regular .draw() method or forks off to custom draw implementations (like, only drawing the background during loading screens). The alternative seems to be manually editing the array of entities that are updated or drawn. Or the worst alternative is for each entity to check in its update/draw methods whether it should do either.
At the end of the day, it would be nice if I could have a collection of entities and that those entities just automagically (normararily I don't make up words) draw or update based on the state of the game.
The way I see it working is that you can define an entity group, then define the draw or update conditions. If a state machine is implemented, then it is as simple as querying that object. Otherwise you need a function that checks for conditions (is ESC pressed?) to determine if it .isDrawable()or .isUpdatable().
When you create a new entity, you can attach it to the associated entity group, or if you are not using groups, it just works (have a default group that is drawn/updated always). Now you define the events that transition between states in (ideally) the state machine or (otherwise) the .isUpdatable and .isDrawable methods and the individual entitys can concentrate solely on the logic necessary to operate in their expected world, and .draw() and .update() don't require loads of logic.
Hey guys, just have started to play around with Impact.
Just was wondering if there's a repository (here or on another site) of all/useful Impact plugins. Got a few ideas I'd like to finish implementing and turning into a plugin and giving it back to you guys would be awesome, considering how much help I've received just by navigating these forums the past few days. :)
1 decade ago
@jasantell: Welcome aboard. You'll have a great deal of fun. Have a look under Forums >> Code
for all known plugins. How useful they are of course depends on what you are doing. ;)
Looking forward to checking out your plugin.
1 decade ago
Animation completion callbacks so that we know when an animation has reached its last frame. My animations all start in the same position (at frame 0) so I need some way of knowing when that character has reached the final frame in their animation so I can smoothly transition the animation.
1 decade ago
I created a new events plugin that solves this problem. It does the following things:
Adds an Animation API allowing you to be notified when a particular animation reaches a particular frame or when a particular animation completes.
Adds an Entity API allowing you to add, fire and remove events on entities directly
This plugin can be found here: http://www.pointofimpactjs.com/plugins/view/7/impact-events
At the very top of my Impact wish-list is a Text Formatter. This would be the ability to define a text box in which the text automatically wraps. This is one of the leading areas in my current game that is both challenging and time-consuming, and for the time being remains unresolved. It's also a very recurring need.
Second on my wish-list is a Menu Manager. This would be something that lets you create a new menu, and easily edit and shuffle the options within its hierarchy. Like text formatting, this is probably the second area of development that I constantly revisit, and it never gets any easier.
The other two I'd love to see are Volume Controls and a Pause Controller. Universal functionalities I'm sure wouldn't go to waste.
A few smaller wishes would be:
-the ability to toggle the grid on/off in debug mode
-the ability to zoom in/out directly in Weltmeister on-the-fly
Please oh please, Santa!
(just kidding, that's only like a month away)
+1 for Text Formatter and Menu Manager. I suspect that these are more commonly needed functionality than slopes.
I think this community could really benefit from an official way to communicate requests and vote on what we value most. Dominic, what do you think?
Page 1 of 1