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:
In summary, the talkhaus is about to have an academic paper associated with it.
Dissertation: Game Engine for Large Online Community Projects
- 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
The first thing I would do with infinite power would be to make myself a cave where I could look at my shadow forever.
<- Go team Yeah Doctor Shemp.!
<- 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.
<- Go team Yeah Doctor Shemp.!
<- 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.
- FrozenQuills
- hehe haha 2024
- Posts: 843
- Joined: 9 years ago
- Location: my skull
Re: Dissertation: Game Engine for Large Online Community Projects
This is fascinating dude; definitely going to follow the progress of your project. The dissertation is really interesting to read as well.
avatar by crayonchewer!
- 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
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?
Will it be FLOSS or just Open Source?
- 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
FrozenQuills wrote:This is fascinating dude; definitely going to follow the progress of your project. The dissertation is really interesting to read as well.
Thank you both.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?
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.
<- Go team Yeah Doctor Shemp.!
<- 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.
<- Go team Yeah Doctor Shemp.!
<- 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.
- 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
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:
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.
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.
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.
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 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])
Code: Select all
self.tags.get_first(GameObject[Level])
Code: Select all
self.tags.select(Transform["scale":1] < Sprite["path":"mysprite.png"])
Code: Select all
self.tags.select(Sprite["path":"mysprite.png"] > Transform["scale":1])
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.
<- Go team Yeah Doctor Shemp.!
<- 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.
<- Go team Yeah Doctor Shemp.!
<- 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.