Advertisement

my game engine project

Started by March 07, 2014 11:29 AM
16 comments, last by RLS0812 10 years, 8 months ago

Hello everybody,

Firstly, I want to talk about a project I have been engaging in for 3-5 months which started with building a simple high level graphics library and came to a point that I can make and use my own tools to help the process of making game.I will add new features on occasion as always. My intention here was to create miscellaneous, small library packets like graphics, matrices, font, gui, geometry, physics, file system, string and and lastly merge all these together in order to transform these total code base to an engine.I use OpenGL 3.3+ for rendering, SDL for basic needs of user interaction and GLEW for context binding.

Let me dig into what I did first days,

I started graphics library with adding an abstraction for drawings of basic shape which old OpenGL version users should be familiar with because it is very similar to Begin-End structure.It is very useful with its simplicity, suitable for fast prototyping and preferable instead of having to write same functions like glGenBuffers, glBindBuffers, glBufferData, glDrawArray/Elements etc. each time.It can be used with static mode too for performance reasons.Vertex and Fragment shader is fixed pipeline for now but I will write new shaders later for optimisation.It meets all 2D/3D drawing needs and effects for a primitive game like stickman I did to test my first physical interaction class written with OOP method smile.png

For vital matrix operation in 2D and especially 3D games, I wrote another library called linear algebra which performs similar or same tasks that can be done with old glRotate*, glScale*, glTranslate*, glLookAt, gluPerspective stuff or GLM library.After I proved inner workings of these matrices on paper with trigonometer, similarity and simple logic, with a weird insistence of doing every thing by myself, I passed these formulas to the computer.

I subsequently dealed with text processing as a preparation to the basic font library to use in gui project which is the point I reach and can create projects on top of that anymore.Font library basicly inludes a class to load my invented format FNT(which stands for "font" as you will guess) and a style class to specify the font file that will be used, and configurations of the text that will be able to be showed in form of different size, italicness, boldness and horizontal and vertical text spacing.It has useful functions such as getting width and height of the text according to current style that bound to the context.

Then, I started building the actual gui that I will use in most of my tool project.It was a terrible experience at fist due to the overwhelming majority of task that will be fullfilled; however, this didn't prevent me from bring the basic frame layer system I toided and moiled to a middleware consisting of a set of reusable class.It can be used for layered windows, and contents like buttons, textarea, clickable images, sliders, checkbox, table on them or menus like "copy, paste, delete, cut" when right-clicking with mouse.

Afterwards I made my first program to draw basic shapes that can be drawn by MS-Paint too.I was ready to draw somethings on the canvas to use in other projects later, after I imitated its most important features by reverse-engineering (namely approximation).Tools like Pencil, Paint Bucket, ColorPicker, Color Management, and vectorial shortcuts such as line, rectangle, circle is completed.I can easily add new features because I can expand the basic layer.For example, the line drawer is suitable to coin new shape like diamond so it is open to extra tools using same logic or for further improvements on the usage of drawings such as uncovering another image when drawing top layer with normal drawing tools.
You can download my image editor from here.

File size : 1.22 MB

qmkq.png

Valid keyboard shortcuts:
ctrl + z : undos the last operation

ctrl + y : redos

ctrl + s : saves to the file path specified at file manager.(Do not forget to add .bmp at the end of the file name.It is one format you can deal with smile.png ) Saves to same folder as of the program if you don't specify a sub-folder

ctrl + l : loads the image at the written file path in file manager

ctrl + alt + r : can be used to resize canvas.(A canvas can't be larger than 1000x1000 px for now)

not : ctrl + z and y can be seen only when mouse hovers the canvas(This is a bug I couldn't fix it yet and put on one side)

Embrace pressure. Because without pressure happens no progression...

And nobody tried it, right? No feedback, no even critique... I feel like being ignored in spite of 166 views :(

Embrace pressure. Because without pressure happens no progression...

Advertisement

that's gamedev, honestly, your in the wrong place to be trying to show this stuff off. a simply paint program doesn't cut it, either you need to present something that is graphically interesting, or you need to locate another community that is more inclined to give feedback on these types of projects.

unfortuantly one thing gamedev doesn't have going for it, is a strong userbase that responds to projects, everyone here is working on there own stuff. and are unlikely to stop and look at yours.

the gamedev mods have been trying to make this community more friendly to these type of projects, but truthfully this is quite a technical community, and I've noticed alot of members generally ignore other projects.

Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.
The topic doesn't match the post and the photo isn't . . .

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

that's gamedev, honestly, your in the wrong place to be trying to show this stuff off. a simply paint program doesn't cut it, either you need to present something that is graphically interesting, or you need to locate another community that is more inclined to give feedback on these types of projects.

unfortuantly one thing gamedev doesn't have going for it, is a strong userbase that responds to projects, everyone here is working on there own stuff. and are unlikely to stop and look at yours.

the gamedev mods have been trying to make this community more friendly to these type of projects, but truthfully this is quite a technical community, and I've noticed alot of members generally ignore other projects.

I actually couldn't find a suitable place for this project so I created the topic here. OpenGL section couldn't have been made to share project. It seemed more likely to be for asking question related to that API to me.

Maybe I should find a better way to communicate other people dealing with this kind of projects at the other end of the world, like me. I will research other communities too, thanks for reply.

Embrace pressure. Because without pressure happens no progression...

If you want to regularly post updates on your project, I suggest starting a blog/developer journal right here on Gamedev. You might not get a lot of downloads and feedback until you get more work done and people find the project to either be fun or useful. Until then, just keep working on it and post about it on your journal. You may get some casual followers.

Learn all about my current projects and watch some of the game development videos that I've made.

Squared Programming Home

New Personal Journal

Advertisement

And nobody tried it, right? No feedback, no even critique... I feel like being ignored in spite of 166 views sad.png

<critique> It's simple in design, nothing much else to say.

In java, it would take less than a week to reproduce. </critique>

.

Edit: for future reference, using OpenGL 3.x can be a a game of roulette with older systems - or modern systems that can not support the 3.x standard ( and there are a lot of them ).

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

.

Edit: for future reference, using OpenGL 3.x can be a a game of roulette with older systems - or modern systems that can not support the 3.x standard ( and there are a lot of them ).

Are there? steam's hardware survey says that over 80% of gpu's are directX 10/11 capable, which usually means at least openGL 3.x capability.

Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

Are there? steam's hardware survey says that over 80% of gpu's are directX 10/11 capable, which usually means at least openGL 3.x capability.



DirectX support != OpenGL support

Many graphics cards do not have the same level of OpenGL compatibility as Direct X .

My laptop has an Intel card with DirectX 11 ... and OpenGL 2.1

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

If you want to regularly post updates on your project, I suggest starting a blog/developer journal right here on Gamedev. You might not get a lot of downloads and feedback until you get more work done and people find the project to either be fun or useful. Until then, just keep working on it and post about it on your journal. You may get some casual followers.

Thanks for your suggestion, I didn't know that there is such a place.

And nobody tried it, right? No feedback, no even critique... I feel like being ignored in spite of 166 views sad.png

<critique> It's simple in design, nothing much else to say.

In java, it would take less than a week to reproduce. </critique>

.

Edit: for future reference, using OpenGL 3.x can be a a game of roulette with older systems - or modern systems that can not support the 3.x standard ( and there are a lot of them ).

Are you sure about its simplicity? Do you know how much I engaged in even for a simple flood fill algorithm, how long it took to make the text area with multiple line work properly. It is easy to add a simple window without worriying about inner working of layers, activeness of GUI objects with any high level API but doing all GUI stuff from the scratch is not that much simple task.For correct pixels mouse over to be processed, it is essential to take into account the positions of sliders and degree of zoom.Providing possibility to select an area for duplicating, deleting, moving, scaling and rotating is another story. Writing a font library that includes methods from loading of fonts up to specifying the presentation style of the text is not as simple as you think.I wrote a library even for string operations which doesn't involves just conventional functions but provides a rich method collection of encryption which might have a potential use for creating various file structure with its a solid infrastructure.Maybe, It seems that all these work is a bit complex, hard and a serious challenge to me because I am a newbie in this field of graphic programming.
I dealed with 3D Model Creator too, and it was not so much trying except texture mapping, light mapping and organizing the 3D interface to edit surfaces, triangles, lines and points rather than writing algorithms for basic shapes or functions such as ellipsoid, surface shifting/rotating or writing a an OBJ loader in order to use external models in program.(I doubt the last sentence is suitable to context because the sentence is long and it doesn't sound good even though it is logically correct :) Sorry for my possible poor English. I may be a little idiot. )

Embrace pressure. Because without pressure happens no progression...

This topic is closed to new replies.

Advertisement