New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Establish an API for Content Repositories #248

Closed
clusterfack opened this Issue Jun 20, 2017 · 9 comments

Comments

Projects
None yet
5 participants
@clusterfack
Member

clusterfack commented Jun 20, 2017

Motivation
Since we have established that the code in this repository is meant to solely be an engine for the game servers, we have created a separate content repository which includes the engine code as a submodule. But if we immediately start adding code to the content repository we will quickly encounter two problems

  1. Spaghetti/Coupling
  2. Compatibility issues

We want to reduce to the smallest amount the coupling between the engine and content code, therefore we need a stable unchanging API that the content server can access, and that the engine code can implement.

Pictorally

API
The API needs (essentially) to be able to recreate most of what we could do in byond code right now using the base functions byond provides. Some examples

(A note to collaborators feel free to edit this list if people add more useful suggestions for what we need to implement)
Location

  • Find objects within a set radius (bounds?)
  • Find overlapping objects (bounds?)
  • Find visible objects in a radius (view)
  • Find all objects in a radius (range)

Collision

  • Behavior for objects when they begin to overlap
  • Behavior for objects when they stop overlapping
  • Behavior for objects when they collide
  • Behavior for objects on when they should collideable or not

Movement

  • Moving something
  • Moving something disregarding collision behavior
  • Testing whether something could move without actually moving
  • Some A* behavior might be useful to put on the backend instead of frontend as well

Lighting

  • Get amount of light at a location
  • Make an object a light
  • Change lighting values on an object
  • Removing light behavior from an object
@clusterfack

This comment has been minimized.

Member

clusterfack commented Jun 20, 2017

I forgot to say this in my initial post but we need people to brainstorm what should be included into the API so we can make a fairly exhaustive list and solidify it.

@theOperand

This comment has been minimized.

Contributor

theOperand commented Jun 22, 2017

Is it possible that looking at other games with a similar (usually modding) system (such as KSP) might be useful to determine functions that are needed here?

@PJB3005

This comment has been minimized.

Member

PJB3005 commented Jun 22, 2017

I doubt it, since most of the API we'd be looking at would be similar to BYOND or SS14 specific.

@PJB3005 PJB3005 modified the milestone: Alpha Jul 1, 2017

@PJB3005 PJB3005 removed the W: Design label Jul 2, 2017

@PJB3005

This comment has been minimized.

Member

PJB3005 commented Jul 3, 2017

@PJB3005 PJB3005 added the W: Design label Jul 10, 2017

@optimumtact

This comment has been minimized.

optimumtact commented Jul 11, 2017

make sure you version your api

@clusterfack

This comment has been minimized.

Member

clusterfack commented Jul 11, 2017

@optimumtact that's the idea, changes to the API are probably going to come in various major releases of the engine. Bugfixes and such are in minor releases which should be mostly compatible, and then any content repositories can point their engine to any version release.

@PJB3005

This comment has been minimized.

Member

PJB3005 commented Jul 11, 2017

Just use semver.

@clusterfack

This comment has been minimized.

Member

clusterfack commented Jul 11, 2017

No duh, you idiot

@Acruid

This comment has been minimized.

Contributor

Acruid commented Oct 26, 2018

Because of the design process of this game, it is not possible to plan out the entire Content API beforehand. The main gateway between Content and Engine are the services in the IoCManager. If somebody needs specific API functionality added to those, please open a new issue specifically about it.

@Acruid Acruid closed this Oct 26, 2018

@wafflebot wafflebot bot removed the W: Design label Oct 26, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment