(shouting)

Dissertation: Game Engine for Large Online Community Projects

wanna make a game, or anything else? seminal bloom!
Post Reply
User avatar
docopoper
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non pharetra enim, nec maximus odio.
Posts: 78
Joined: 12 years ago
First name: Shane Farrell
Pronouns: they/he
Location: Ireland

Dissertation: Game Engine for Large Online Community Projects

Post by docopoper »

After having worked on A2XT and seeing fangames like "Toadette Strikes Back" and "Mega Man: Rock Force": I decided I wanted to build a game engine that caters to teams the size of A2XT's, but still allows entirely original games to be created. To this end I am creating a game engine that will allow people to create levels and content for a game much in the same way as SMBX, but will also allow people to write custom enemies and even entirely new game systems.

You can read the report I've written on my progress here: Interim Report
Naturally since this is going to be my dissertation, the project has a lot of momentum behind it and is having a lot of thought being put into it.
I encourage you to give the report a read if you're at all interested in programming, I'm having to solve some pretty difficult problems with the design. I plan on making the project open source once I am done with it for college. I will keep this topic up to date with my progress as I go along and probably make a new topic when the project goes open source.

Mockup of what I want the level editor to look like:
Image

In summary, the talkhaus is about to have an academic paper associated with it.
The first thing I would do with infinite power would be to make myself a cave where I could look at my shadow forever.

Image <- Go team Yeah Doctor Shemp.!
Image <- That's everyone being nice to me. ^^

I made a game called Utter Confusion! Play it! :D
It's a lot of fun and has been incredibly popular at every indie game dev party I've brought it to.
User avatar
FrozenQuills
hehe haha 2024
Posts: 843
Joined: 9 years ago
Location: my skull

Re: Dissertation: Game Engine for Large Online Community Projects

Post by FrozenQuills »

This is fascinating dude; definitely going to follow the progress of your project. The dissertation is really interesting to read as well.
Image
Image
avatar by crayonchewer!
Image
Image
Image
SMBX Tileset Compiler and Separator
The boss entry that made me eat a shoe.

5th place counter: 5
(SMBX Forums CC11, SMBX Forums CC12, Endgame Madness Contest, SMWC Kaizo Contest 2016, SMWC 24hr Contest 2018)
User avatar
raekuul
2 Nephi 2:25-27
Posts: 1841
Joined: 14 years ago
First name: Pokota
Pronouns: he/him/his
Location: Deti Plains
Contact:

Re: Dissertation: Game Engine for Large Online Community Projects

Post by raekuul »

This... is impressive. While it sounds as though it will be primarily intended for collaborative projects, I presume it would also be accessible for solo production as well?

Will it be FLOSS or just Open Source?
Games Beaten In 2020, 2021, 2022, 2023, 2024
Image
User avatar
docopoper
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non pharetra enim, nec maximus odio.
Posts: 78
Joined: 12 years ago
First name: Shane Farrell
Pronouns: they/he
Location: Ireland

Re: Dissertation: Game Engine for Large Online Community Projects

Post by docopoper »

FrozenQuills wrote:This is fascinating dude; definitely going to follow the progress of your project. The dissertation is really interesting to read as well.
raekuul wrote:This... is impressive. While it sounds as though it will be primarily intended for collaborative projects, I presume it would also be accessible for solo production as well?

Will it be FLOSS or just Open Source?
Thank you both.

It will indeed be FLOSS, probably under an MIT license or something. I am quite a big fan of Python, and its development, so I will probably be going much the same route as it. One idea I really like from Python's development is having a giant standard library that slowly integrates the best modules that the community creates. I've always found that very cool since it has given Python the best standard library of any language I've used.

Also, yes. The engine will of course be usable for single developers as well. A lot of the work in this engine is around encouraging developers to code in a way that will be reusable by other developers. Writing code in a reusable way is also obviously very useful for single developers, and there aren't aspects of the engine that feel like limitations for the sake of supporting multiple developers. In fact, designing the engine around multiple developers should make it easier to take code other people have written and use it in your project, since that's kind of like having multiple people work on the project.
The first thing I would do with infinite power would be to make myself a cave where I could look at my shadow forever.

Image <- Go team Yeah Doctor Shemp.!
Image <- That's everyone being nice to me. ^^

I made a game called Utter Confusion! Play it! :D
It's a lot of fun and has been incredibly popular at every indie game dev party I've brought it to.
User avatar
docopoper
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non pharetra enim, nec maximus odio.
Posts: 78
Joined: 12 years ago
First name: Shane Farrell
Pronouns: they/he
Location: Ireland

Re: Dissertation: Game Engine for Large Online Community Projects

Post by docopoper »

I now have both the tag system and simple rendering working. :)

The tag system took a lot of work and is a feature I've always wanted when making games. It basically works like JQuery if you've ever used that. The tag system lets you query the game state and get all the objects within certain criteria, and since the engine organises the entire game into a tree, the syntax is quite like using JQuery selectors.

Here are some examples:

Code: Select all

self.tags.select(Enemy[Enabled, "health": 100])
This will return every enemy that is a child of the current object, is enabled and has 100 health. The select method always runs relative to the object it was called on.

Code: Select all

self.tags.get_first(GameObject[Level])
This code will simply get a reference to the current level. As far as the engine is concerned, the current level is nothing more than a game object with the Level tag attached to it. This allows for some cool things to be very easy to do, such as placing the level inside a virtual window and having multiple levels in existence at a time. Essentially you can do anything with a level that you can do with a normal game object.

Code: Select all

self.tags.select(Transform["scale":1] < Sprite["path":"mysprite.png"])
This code will get the position of every sprite with the path "mysprite.png" and a scale of 1. The less than symbol here indicates that the Transform object is the child of the sprite object.

Code: Select all

self.tags.select(Sprite["path":"mysprite.png"] > Transform["scale":1])
The leftmost object is always the one returned, so by swapping the order of the objects here: Now the sprite object will be returned instead. This will perform the exact same query as the previous example, only which object is returned is affected.


I have a fancy animation of spinning sprites going on too, but it's late at night and I don't feel like messing with OBS, so you'll have to trust me for now. So, progress is going great! :D

Any questions are welcome.
The first thing I would do with infinite power would be to make myself a cave where I could look at my shadow forever.

Image <- Go team Yeah Doctor Shemp.!
Image <- That's everyone being nice to me. ^^

I made a game called Utter Confusion! Play it! :D
It's a lot of fun and has been incredibly popular at every indie game dev party I've brought it to.
Post Reply