Skip to content
This repository has been archived by the owner on Jan 18, 2022. It is now read-only.

Module Request - 2d World (library + hard problem solving) #75

Open
leland-creswell opened this issue Jul 10, 2018 · 3 comments
Open

Module Request - 2d World (library + hard problem solving) #75

leland-creswell opened this issue Jul 10, 2018 · 3 comments
Assignees
Labels
A: other-feature-module Area: Other feature modules S: being-considered Status: This issue is being considered. T: feature Type: This is a new feature

Comments

@leland-creswell
Copy link

Overview

I would like to make a request for a GDK module that includes code running on SpatialOS handling 2d game worlds, and the hard problems that sometimes crop up while creating them, especially with multiplayer involved.

The 2d-based game has come back to the fore as a highly active section of the overall games industry. It has advantages in the ability to use simpler code to achieve basic game functionality, as well as dramatically reduced budgets for visual assets, allowing small teams, or even solo developers (as was mostly the case with Gungeon), to create amazing experiences based on core gameplay, without the millions of dollars required in a typical AAA game.

However, massive multiplayer (and even simple multiplayer) networking is still an extremely hard problem, especially if the code is written from a publicly available library. Most successful 2d games, especially those created by smaller teams, either do not have a multiplayer component, or rely on (vastly overpriced, imo) simple multiplayer plugins/components usually bought via the assets store.

There is an incredible amount of gameplay, revolving around people working together/against one-another, and building things alongside each-other, that is simply not able to be tapped due to the lack of an easy way to get massive multiplayer going at a reasonable price for a smaller team.

References

Gungeon:
gungeon example

Dungeon Crawl Stone Soup:
dcss example

Dwarf Fortress:
dwarf fortress ex


Requirements

The module should include the following (not an exhaustive list, just the things I can currently come up with):

  • A 2d physics world, set up using the same ECS system used in the 3d GDKs
  • A grid (square, hex, octagon?) overlay for the world, allowing for terrain/entity division in a tile format (may or may not be used by each game - useful for turn-based games, aggressive optimization, region-control, etc..)
    PS: It would be nice if the 3d GDK modules also had support for grids, so that something similar to Final fantasy tactics could be done with more ease)
    fft example
  • Support for Z levels to allow "floors" and different altitudes/heights similar to what is done in dwarf fortress
  • Built-in terrain system that maps/etc.. could be imported/exported from (via photoshop drawings/real-life height maps/etc..) - perhaps focus on the networking side of this? I know that there are various assets in the store that help handle grid/tile based 2d maps... not sure what exactly should be in the GDK..
  • Camera zoom support with the ability to render the world differently based on the zoom level (ie. when zoomed close to a character, perhaps a cliff would look like a black abyss.. but if zoomed out, you would see further down - this would probably include tile/terrain streaming of some kind...)
  • Optimizations specific to 2d (especially if the grid is used to highly simplify combat/movement data traffic/processing)
  • Local 2d physics worlds that can be spun up/down for shared, moving spaces such as airships, boats, floating islands (sonic and knuckles? 👍 ^^)...
  • All applicable optimizations/components/etc.. from the base 3d GDK (smooth movement prediction, etc..)

(All I can think about for now.. would love to hear additional ideas if anyone has them..)

@martinzlocha
Copy link
Contributor

Thanks for the detailed report @leland-creswell. We really liked some of the ideas and provided examples. Unfortunately we are focusing on 3d support right now because that usually requires more physics computation which aligns well with our product and is usually harder to solve. We won't be able to work on this feature request for the foreseeable future but once we get more time to work on other feature modules we will revisit this and update you on our plans.

@Davidvp
Copy link

Davidvp commented Jul 26, 2018

In addition, the 2d components of Unity work with the X and Y axes. Any chance this will be supported in the near future?

@ElleEss
Copy link
Contributor

ElleEss commented Aug 6, 2018

Tracking this issue with JIRA ticket UTY-841.

@oblm oblm self-assigned this Aug 6, 2018
@jamiebrynes7 jamiebrynes7 added the A: other-feature-module Area: Other feature modules label Jan 8, 2019
@jamiebrynes7 jamiebrynes7 added T: feature Type: This is a new feature S: being-considered Status: This issue is being considered. labels Jan 9, 2019
jessicafalk pushed a commit that referenced this issue Nov 15, 2019
* cpp changes for 4.19 compatibility

* Fix interop type signature for array arguments, don't generate type bindings for them

* Fix issue with UEBuildConfiguration.bBuildEditor flag in Build.cs

* Don't compare type against a string

* Change engine branch reference in README

* Style
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A: other-feature-module Area: Other feature modules S: being-considered Status: This issue is being considered. T: feature Type: This is a new feature
Projects
None yet
Development

No branches or pull requests

8 participants