0
\$\begingroup\$

I was reading this article about physics in Celeste and Towerfall, and came across the use of the term "solid":

All of our physics are handled by two classes: Solids and Actors. Solids are, of course, the collidable level geometry. Actors are physics objects, such as players, arrows, monsters, treasure chests, etc. Anything that has to move and interact with the level geometry is an Actor. The system has a few simple constraints:

  • All colliders are axis-aligned bounding boxes (AABBs)
  • All collider positions, widths, and heights are integer numbers
  • Except for special circumstances, Actors and Solids will never overlap
  • Solids do not interact with other Solids

What does "Solid" mean in the above context?

Is it referring to a floor, a wall, or both?

I have also seen this term used in 3D graphics, but I don't think it's being used in the context of 3D CG here.

\$\endgroup\$
4
  • \$\begingroup\$ The link contains hundreds results for "solid". Do you refer to some specific paragraph you could quote in the question here? Or to the article as a whole? In later case it could be more efficient to just ask the author. \$\endgroup\$
    – Kromster
    Commented Sep 4 at 6:20
  • \$\begingroup\$ This is about the entire article. I do not fully understand the meaning of "Solid," so I am unsure whether it means the same thing or something different in each paragraph. Based on your comments, I gather that the nuances seem to vary slightly between paragraphs. If that’s the case, this might not have been an appropriate question for this site. (That said, I would still like to know the general meanings commonly used in gaming, at least if they can be narrowed down to a few patterns.) \$\endgroup\$ Commented Sep 4 at 6:45
  • \$\begingroup\$ I've embedded the first mention of solid from the article on the body of your question. The bolded sections seem to already define "solid", no? What do you find unclear? This article is not describing a universal term in game development. It"s saying "I had two object types, and I chose to call this one 'solid' to describe it". \$\endgroup\$
    – DMGregory
    Commented Sep 4 at 10:54
  • \$\begingroup\$ After reading your explanation and read the article, it seems that the term is already defined within the article. I was confused because I thought I had seen it used with a different meaning somewhere else. Although there isn't a clear definition(class statement) written in the article, Solid, Actor seems to be the class(type). \$\endgroup\$ Commented Sep 4 at 12:31

2 Answers 2

5
\$\begingroup\$

This article uses the term "solid" to refer to objects that don't move, change or disappear while the game is running, while "actors" are objects that might do these things.

When you know that an object won't move or change at runtime, then that allows you to do a lot of optimizations that can greatly improve the performance of your game.

But calling such objects "solid" is not standard terminology. Different development teams and technologies often describe such objects in different terms. For example, in Unity, such objects would be called "static" objects. In Roblox, they would be "anchored" objects.

\$\endgroup\$
2
\$\begingroup\$

What does "Solid" mean in the above context?

The article states:

Solids can’t actually collide with other geometry. If you tell a Solid to move 30 pixels to the right, it is guaranteed to get there, regardless of whether other Solids are in the way

In other words, if all of the objects in the game were Solid you wouldn't actually have any collisions. Objects would just move through each other.

Hence given this articles definition, solids are only interesting, given the effects they have on Actors, the article defines three such effects:

  • Pushing - when a Solid collides with an Actor it can push/move it out of the way.
  • Squishing - If an Actor gets trapped between two Solids that are approaching each other and there isn't enough space the Actor gets squished - the document notes the default behavior in this case is the Actor gets destroyed.
  • Carrying - Is a special case of "Pushing" usually if a Solid and an Actor are touching and the Solid is moving towards the Actor it would just push it. However if an Actor is resting on top of a Solid, the top of the Solid is flat and the Solid is moving horizontally it's possible to impart the movement of the Solid to the Actor. Without the carry effect the Solid would just slide out from underneath the Actor and the Actor would likely fall due to gravity.

Is it referring to a floor, a wall, or both?

In most cases both are Solid.

Generally if something in the game world is indestructible and can't be moved simply by walking (or running) into it, it's probably Solid.

What exactly does "Solid" mean in game development?

A physics engine (inside a game engine) will typically have a concept similar to or close to this articles definition of Solid. However different Engines may have different names and may support other variations for example Godot provides:

AnimatableBody3D

A 3D physics body that can't be moved by external forces. When moved manually, it affects other bodies in its path.

StaticBody3D

A 3D physics body that can't be moved by external forces. When moved manually, it doesn't affect other bodies in its path.

Hence you might describe both of these objects as "Solid", and in the case that both objects are not moving they act the same, however if these objects move (as a result of explicit code to do so) they will affect other Physics entities differently.

That said without the context of a specific engine or definition, I don't think the term "Solid" is well defined.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .