Skip to main content
GameDev.net gamedev.net
🔒 Locked 🎲 GameMaker

My First Game Project

Started by True_Krogoth Jul 22, 2015 at 5:16 AM 10 replies 3.5k views
Original Post
True_Krogoth
True_Krogoth

I started a project and it seems like I need some feedback during the process :]

You know, when you do it first, you might feel like you do many things terribly wrong, so better get criticized to stop making trash in time )

For now I can tell you little things.

My future game engine has simple name Keng.

First to say, it is 2D.

Second, it >must< have strong OOP. So you can design whatever.

I tend to start with some simple RPG.

How is my engine designed?

There are 3 basic classes:

TObject,

TBasis::TObject,

TComponent::TObject.

Every Object has 4 connections: 2 horizontal - prev and next, 2 vertical - base and sub (all - intrusive lists).

All other classes inherit whether Basis or Component.

Basis is built on Object vertically: it is added as sub to Object, and Basis has Object as its base.

Component is built on Basis horizontally: it is added as next to certain Component in the horizontal list.

Unlike Basis is built freely on any Component, or even on nothing (Null Basis), Component is placed according to its own order index. Basis knows last Components of all order indexes and easily puts new Component in the list before Components with higher order indexes and after lower ones.

Every Component has loopUpdate() method that calls virtual update() method for the Component and each following Component until it reaches the first Basis. So, if you start with the Basis, you make a whole loop, updating every thing.

Now take a look at my implementation please:

https://github.com/trueKrogoth/keng/blob/master/keng/main/obj_basic_types.hpp

(Probably far from the best in many aspects, I would like to know)

Next,

one of important classes is TFrame::TBasis.

First created Frame is gonna be screen (exactly Null Basis). So, whatever you do with your mouse / keyboard / etc is translated to Frame and its objects.

Here is unfinished Frame implementation, but what's more important is that how I design secondary classes. It is somewhat probably very questionable I would like to get an answer about! Feel free to ask anything, I will answer with pleasure. :]

https://github.com/trueKrogoth/keng/blob/master/keng/obj_types/frame.hpp

My Github:

https://github.com/trueKrogoth/keng

(Here is working game with all sources at its current stage)

As it was requested, I put Blizzard(C) for sprites being used :]

__Toz__
__Toz__

Second, it >must< have strong OOP. So you can design whatever.

What do you mean with 'strong' OOP? Did you mean something like the SOLID object oriented design principles?




I tend to start with some simple RPG.

If you want to create a small game to test if your design is sound then I would start with something really simple. Like a Pong or Breakout clone. That way you can focus on what the engine needs to make creating games easier instead of being occupied with designing a more complex game. Also there is the philosophy here on gamedev.net that you should create games instead of engines. This boils down to the fact that if you start programming a game instead of an engine you'll soon notice what parts can be re-used in other games. Whereas if you started with the engine you would have no idea what a future game would need (assuming you haven't created a game before).




Every Object has 4 connections: 2 horizontal - prev and next, 2 vertical - base and sub (all - intrusive lists).

Unfortunately I don't have much experience with using objects stored intrusively, so I don't see the all the pros and cons. I am wondering though whether this doesn't make it difficult to find a specific object, since you would need to traverse all the objects, making it a O(n) operation just like a linked list.

Hmmm.. that's too bad. The links in your post give 404s, but they did work a few hours ago. I did remember seeing some macros used to generate parameters for a constructor. So I'm just going to say that something like that is just going to end up confusing people. Including yourself if your engine gets big enough.

True_Krogoth
True_Krogoth

Sorry, I have fixed links!

Also added link to my github where you can get the current release.

Currently game contains cursor and scrolling randomly generated tileset.

jpetrie
jpetrie

So... what sort of feedback are you looking for here, exactly? On your implementation? Your design? Your stylistic choices?

jpetrie
jpetrie

Your sprites appear to be ripped from WarCraft.

That's not cool. Don't do that.

True_Krogoth
True_Krogoth

Relax, this is not a game yet.))

Everyone knows this sprites.

jpetrie
jpetrie

That does not make willful copyright violation acceptable.

The laws governing the protection of intellectual property exist, in part, to protect the rights of the creators of that property. They are very important to game developers, and brazenly disregarding them as you're doing is extremely insulting to many developers whose livelihood is buoyed up by the protections you're spurning.

I don't expect you will find significant help here if you're going to disrespect the community that much.

True_Krogoth
True_Krogoth

O_o

I didn't put a single word about Warcraft as it's clear to pretty much everyone from where they are, and it isn't even significantly related to my destination result.

But I did just now.

I am very sorry if someone got insulted.

Orymus3
Orymus3




pretty much everyone from where they are

You'd be surprised.

As a general rule, it is malpractice than to use placeholder assets from other products. Better off using ugly sketches made in paint than to rip-off actual content.

Also, you might think you're not liable to legal issues until you ship an actual product, but then again, you'd be surprised.

ikarth
ikarth

O_o

I didn't put a single word about Warcraft as it's clear to pretty much everyone from where they are, and it isn't even significantly related to my destination result.

But I did just now.

I am very sorry if someone got insulted.

I think you're still misunderstanding a bit here. Whether you said where they were from or you didn't doesn't matter. It's still not cool to rip off commercial sprites. An artist worked hard on those; stealing them even for your prototype is going to upset every artist who hopes to be compensated for their work.

There's plenty of open-source or Creative Commons art available these days (check out http://opengameart.org/) and one of the major points about Ludum Dare is to demonstrate that you can make a game entirely from scratch in 48 hours, art and all. There's no excuse for ripping off commercial sprites.

Penkovskiy
Penkovskiy

Are you starting completely from scratch? I don't usually like to re-invent the wheel with engines, if you want a C based game engine that takes care of a lot of the basics for you, I would suggest Monogame. I've been using that for a while to create 2D games and I've seen some pretty cool games made by others with it. If you decide to use it send me a PM and I can help you out and point you in the right directions.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.