00:00
00:00
Newgrounds Background Image Theme

Fir3Ba11 just joined the crew!

We need you on the team, too.

Support Newgrounds and get tons of perks for just $2.99!

Create a Free Account and then..

Become a Supporter!

MetaGame Collab Interface Prototype

Share Collapse

Author Comments

The source code for implementing this in Phaser, HaxeFlixel, Godot, and Unity is available here.


Edit: We're getting started with the first Meta-Game collab and there's still time to get in on it. If you'd like to participate then check out the collab thread here


Notes

  1. I would like to make it possible to move from game to game just within the current page's game canvas instead of having to load the entire NewGrounds page of the game you're switching to. I can't do it with a window.open(url, "_self") or location.assign() command because of https / http issues, but I may ask the site's powers that be if it could be made possible if this gets off the ground.
  2. For this prototype, the only time you should need to press the button to make the game read the save data is if you have multiple tabs open and change data in one game, then go to another game's tab. If you switch to a different game on the same page, then everything gets taken care of automatically so it would be a non-issue if that's how the collab sets things up. In Unity I set it up so even if you have multiple tabs open and change stuff in one tab before switching to the Unity tab it will automatically read the updated save data when it realizes that it has lost and regained focus, so you don't really need that Read Save button at all. I think there are ways of doing that in the other frameworks too with on_blur commands or something; I haven't figured them out yet, but once this reaches the stage of moving forward that should be a solveable issue and players shouldn't have to click buttons to read changes in the save data from other tabbed games that are running simultaneously (if the collab even decides to use tabbed games running simultaneously).
  3. I would recommend using Phaser or HaxeFlixel instead of Godot or Unity if you're able since they make less bloatware and would lead to shorter loading times between games, and if you only have the free version of Unity you can't disable the splash screen. But if a bunch of people end up really wanting to use Unity, I'll try to develop a feature to make it open a tab where in the background it would sequentially load each of the games in the collab to get them cached on the player's computer when they first start so it won't be too unbearable when they're switching between games.
  4. In this prototype, each of the individual "games" are unpublished but viewable by anyone. For an actual collab, you could choose to design your game to also be playable as a stand-alone game outside the context of the full meta-game and go ahead and publish it (everything will still work for the collab), or design it specifically as a game within the collab in which case it might make more sense to leave it unpublished like I did. Totally your choice. If it's unpublished, then you could still award medals by setting a flag within the shared save data to have the starting game in the collab issue the medal.

Log in / sign up to vote & review!

Seems to work well. This is an exciting concept! Before a collab like this is organized, There should be a public call to brainstorm ideas. This meta collab has tons of potential for neat ideas not seen anywhere else. I think it would be hard to pull off, though. Organizing animation collabs seems difficult enough, but I imagine games to be another thing. The load times on Unity games certainly poses an issue to making this idea very seamless.

3p0ch responds:

I believe you're correct. My main concern with attempting something where games are this interconnected would be structuring the collab in such a way that if one person flakes out and doesn't finish their game, or has buggy code, or makes their game way too hard for most people, or something then the entire collab won't get sunk because of it. That could be handled by asking people to make adjustable difficulties in their games and maybe making cheat options that would let players skip any games that don't work for them.

As for the long load times for Unity (and Godot) games, I might be able to handle that by writing code to open a tab that would in the background cycle through every game in the collab to get it loaded and cached on the players' computer so load times when they actually reach the points of switching games aren't so bad. I haven't actually executed that, but if people want to make this happen then I'll try it.

I haven't had much luck mustering people for this on my own, so the only way to make it happen might be to ask a power that be if they'd want to try this as a NewGrounds thing, after a public brainstorming session if it can produce a plan that seems viable.

Great prototype!

My thoughts:

For a constant stream of updates, you may have to find a way to use websockets on all frameworks. (Or maybe since they call JS functions, the JS handles the sockets and stream results back to them)

This is something that will indeed have to be planned out.

All I see here is a way to "share data" to whoever wants to access it. Thus, regardless of framework, once they can call those functions, they can manipulate that data.

It would definitely require planning to decide how a game is made and you're able to "share games" because who would want their char running 8 pixels and suddenly it's changed to 3 pixels? xD

I don't see any games that can be done with this yet, but that's probably because I'm looking at it in terms of and endless stream (like multiplayer) rather than a game with unique save systems. So definitely; It'll need to be planned out.

I'm interested in more progress on this.

I can't currently take part in any collabs since I'm working on my own game engine. But it's definitely something I can add to my engine when it's complete, if it's complete too.

3p0ch responds:

Thanks Danidre!

I should clarify what I have in mind: I’m envisioning a single-player game that wouldn’t require constant updating from websockets like a multiplayer game or anything. It would be more along the lines of making a game universe where the player is, say, running around in an RPG world in one game, switches to another game that handles combat using action game mechanics instead of the usual boring Fight / Magic / Guard / Flee RPG mechanics, hops into their airship and flies around in a flight sim game to reach new towns, goes into a puzzle game to unlock dungeons in a new town, enters a FPS game to fight monsters in the dungeons, and the like. All different games, but all tied into a single epic story with the potential to interact by having actions in some games affect how other games behave, and shared data would be more along the lines of storing HP, max HP, inventory (including things that are picked up in one game that can affect the behavior of other games), unlocked areas, upgrades to their ship, status of key boss enemies, states of puzzles, and such. In some cases it might benefit from having two games open simultaneously, like solving cross-game puzzles where two games need to have a coordinated problem solved and it would be helpful to see and control things in both games at the same time, so I also want to keep that as an option for the devs by allowing them to open new browser tabs with other games.

I think this has everything that would be needed to pull off that sort of collab since it would just require writing to the save data whenever anything pertinent changes (items being picked up, areas being unlocked, etc). You’re right that it’ll take some planning – my main concern would be to make sure that a bad bug or excessive difficulty in one game won’t ruin the entire collab’s efforts, so implementing adjustable difficulty and ways of completely skipping any problematic games would be key. But I’d also be open to suggestions on other ways of thinking about it that might be even awesomer.

Credits & Info

Views
884
Votes
78
Score
3.07 / 5.00

Uploaded
May 29, 2020
9:46 AM EDT
Tags