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

Already on GitHub? Sign in to your account

Rework the game engine #9

Open
zorun opened this Issue Jul 14, 2011 · 5 comments

Comments

Projects
None yet
2 participants
Collaborator

zorun commented Jul 14, 2011

This might be the hardest and most delicate work to be done, as it deals with the core of ASCIIpOrtal.

The current game engine suffers a major design flaw that prevents any further development, like the moving platforms project. I actually spent a couple of hours struggling with the game engine to implement a minor modification...

On the other hand, the object manager (contributed by ivanq) is really excellent, as it is very computationally efficient while keeping a simple design. If possible, this component should be kept (or adapted).

Suggestions to improve and/or rewrite the game engine (mainly the "physics()" function):

  • game objects should actually be implemented using objects (and not just a C-like struct)
  • this would allow defering more logic to the objects themselves, as the current game engine is so filled up with object-specific code and corner cases that it's a pain to read (and it gets worse when it comes to modify it).
Owner

cymonsgames commented Jul 15, 2011

The part to be careful about is that this has the potential to break a lot of existing behavior that is exploited for several people's maps. Like being able to slip between block in a checkerboard pattern. These behaviors exist because of shortcuts and, quite frankly, bugs in the current engine. Should they be fixed at the expense of some levels or not? I say yes, but it should be deliberated on a bit more I think.

Collaborator

zorun commented Jul 15, 2011

On Thu, Jul 14, 2011 at 09:12:40PM -0700, cymonsgames wrote:

The part to be careful about is that this has the potential to break a lot of existing behavior that is exploited for several people's maps. Like being able to slip between block in a checkerboard pattern. These behaviors exist because of shortcuts and, quite frankly, bugs in the current engine. Should they be fixed at the expense of some levels or not? I say yes, but it should be deliberated on a bit more I think.

One more reason why it will be delicate, yeah...

I suggest not caring too much about these retro-compatibility issues
at first, to start with a clean design. Then, when we have something
that works well and that's easily extendable, we'll see if it's worth
tweaking to reproduce some of the old behavior.

I must admit that deliberately implementing bugs to reproduce an old
behavior seems weird to me. But again, if that brings more fun... :)

Now I recall something important: should the player be allowed to
literally "climb" a wall by standing on a portal? As far as I
remember, this is the most serious bug and the one that is likely to
break the most levels. Also, it might change the design of the game
engine (do we allow an object to be at the exact same position as a
portal?)

Something is clear: let's not code that stuff without having a very
good idea on where to go and on how to achieve it :)

"C'est mieux, mais il y a plus cher ailleurs" :


/ | \ | | | | | / / | ()_ __ _ ___ __
| | | | | | | |/ /| | | | ' | | | \ / /
| || | |\ | || / / | |_
| | | | | || |> <
|| _|**// |
**||| ||__,//_\

GNU/Linux fan && Archlinux user

Owner

cymonsgames commented Jul 15, 2011

As for "climbing" with portals, I assume you mean if there are 2 opposite sticky walls should you be able to use that to go up? That was by design. Becuase portals in this game have dimension they punch a temporary hole in the wall and it is possible to stand in them. Sure it's a departure from the 3D game, but I kinda like it. That also means that if an object is in the portal then they are in 2 places at once, and again I'm okay with that. It causes headaches but was by design.

Collaborator

zorun commented Jul 15, 2011

Ok, sorry about that, I really thought it was a bug :)

Owner

cymonsgames commented Jul 15, 2011

Lots of folks do.

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