Jump to content
  • Advertisement
Sign in to follow this  
True_Krogoth

My First Game Project

This topic is 1087 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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 :]

Edited by True_Krogoth

Share this post


Link to post
Share on other sites
Advertisement

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.

Share this post


Link to post
Share on other sites

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.

Edited by True_Krogoth

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Your sprites appear to be ripped from WarCraft. 

 

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

Share this post


Link to post
Share on other sites

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.

Edited by True_Krogoth

Share this post


Link to post
Share on other sites


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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!