First a quick update on stuff that's been going on since my last post here:
-I've been let go from my old job, looking for new one.
And now back to our topic at hand.
I always like to boast that I'm a graphics programmer, that there's little that can stop me in my way and even though I actually do believe that's true I don't have much to show for that. Be it because of work and being uninspired to program back at home, or because I've spent far too long retouching my engine and in the end I end up with a lot of hidden work and nothing visible, or because I was simply too lazy/distracted.
Well, since I lost my job I decided It's time to boost my portfolio a bit, and prove to everyone and to myself that I can actually be a good graphic programmer. To accomplish this I decided to work every day on a small demo of a certain feature I never implemented before. The first one being:
Deferred Lighting.
Of course my first reaction was grabbing as much as I could from the internet in terms of research papers and tutorials. The most helpful I found are these:
Creating a GLSL Library - This was a good way to quickly sketch out a simple per-fragment lighting shader and apply it to a model lit directly. I've used this before so I simply copied most of the code
Coding Labs Deferred Rendering Tutorial - This is what I needed, though I decided to skip the tutorial and learn directly from source code since I already understood the concepts and implementation, but I didn't know which opengl functions to use.
Normally Deferred rendering requires you to use the inverse of the modelview matrix and inverse of the projection matrix to get both the pixel position from projected screen space to camera-space, and to get the lights from world space to camera space, however the tutorial used a nasty inefficient hack to get the pixels in world space without the need for transformation: it simply recorded all x, y and z inside what in normal deferred lighing program would be a single-32bit float-value gbuffer.
However with lights I did another nasty hack: instead of using the gl_LightSource[i].position in my shader I simply replaced it with an array of vec4 screen-space light positions I calculated outside using the modelview matrix from the first pass and passed to the shader.
All of this just so I didn't have to write/find and de-obscure and test and debug a matrix inverse function.
In the end I spend between 4 to 8 hours on this (how mach depends if you count the research time) over the course of 2 days.
The results?
Here:
All in all it wasn't that bad but the code ended up a horrible conglomerate mess, most of which was shoved into a single main.cpp file.
If you're interested you can download the demo with the code here:
Deferred Shading Demo
Before you look at the source please note that this is terrible code, unoptimized and originally wasn't meant for viewing by other people, if I ever did the exact same demo again there would be ZERO similarity.
Right now I'm working on another experiment, namely importing a model with animation using Assimp (which I still have to learn) and then use that data in my animation tree (similar to the one UDK has), in the end add some IK, but this experiment is much larger than the deferred shading one, so it'll take probably about a week or so before I post here again.
Thanks for your attention!
Laters!
Spliter
Showing posts with label Random projects. Show all posts
Showing posts with label Random projects. Show all posts
Tuesday, November 29, 2011
Sunday, December 5, 2010
Urban Stroll
Hello!
Just a quick blog update to show I'm not procrastinating as much as it would seem.
This time it's actually a VIDEO blog update!
sooo... yeah
Enjoy
As I mentioned I'm looking for a job so until I get hired, or at least until someone will give me a job interview I won't be able to make a tutorial. I'm also extremely busy with university projects, If I want to do anything of my own it means to stay up till 4am.
That's all for this blog post.
I'll see you next time!
Just a quick blog update to show I'm not procrastinating as much as it would seem.
This time it's actually a VIDEO blog update!
sooo... yeah
Enjoy
As I mentioned I'm looking for a job so until I get hired, or at least until someone will give me a job interview I won't be able to make a tutorial. I'm also extremely busy with university projects, If I want to do anything of my own it means to stay up till 4am.
That's all for this blog post.
I'll see you next time!
Labels:
Life Ramblings,
Programming,
Random projects
Sunday, July 11, 2010
The joy of prototyping
One of the biggest problems I face when doing tools for my game is the sheer size of it all and my general lack of experience doing usefull things (as oposed to screwing around).
The biggest challenge I'm facing right now is making a level editor that be called a 2D version of Valve Hammer Editor.
Yes. I'm that stupid to try making a huge editor on my own with barely any prior experience. How did it go? Well... I failed miserably before I even begun. The sheer number of features I want in my editor is daunting. Implementing them on their own is already quite a task, not to mention integrating them all into one big editor where every piece has to cooperate with the rest.
The biggest challenge I'm facing right now is making a level editor that be called a 2D version of Valve Hammer Editor.
Yes. I'm that stupid to try making a huge editor on my own with barely any prior experience. How did it go? Well... I failed miserably before I even begun. The sheer number of features I want in my editor is daunting. Implementing them on their own is already quite a task, not to mention integrating them all into one big editor where every piece has to cooperate with the rest.
Labels:
Game Dev,
GUI,
Programming,
Ramblings,
Random projects
Sunday, December 6, 2009
El Poho going good
btw El Poho is the name of my game engine until I find a better name.
Ok, I finally added polygon collisions into it. It's a smaller version than the previous one but it's very easy to add features in it. For now the main features of it are:
-great scalability (should be easier to make a game in it now)
-Polygon-based collision system
-compact (most unnecessary features like GUI and a great number of other stuff was not implemented)
and as a bonus:
-simple yet powerful particle engine!
However I'm still planning on adding a simple GUI system for things like buttons and text at the very least, I should probably add an event system as well.
Another feature I'm working on is quite an important one: Scheduling.
So far it runs at 30 frames per second and it just waits some time between every frame to mantain that, but I need to add a feature that skips the drawing step completely if it runs too slow. So far every object in the game has a few functions like draw() and think(). With the scheduler I'll be able to set every object to think at diferent time periods, like every 1 second or every 1/20 seconds, which will make it a lot faster when I'll have to add AI support to it. With scheduling I can have AI's in Idle states that think every 5 seconds or so, or think every 1/20th second if on full alert, this'll be an enormous performance boost.
For testing the engine out I'm making a small game where you control a dust cloud. Not much to do for now as I'm having some trouble in porting things to the new collision system (what worked back then doesn't work now).
Ok, that's all for now.
maybe I'll update thig blog later this week.
-Spliter
Ok, I finally added polygon collisions into it. It's a smaller version than the previous one but it's very easy to add features in it. For now the main features of it are:
-great scalability (should be easier to make a game in it now)
-Polygon-based collision system
-compact (most unnecessary features like GUI and a great number of other stuff was not implemented)
and as a bonus:
-simple yet powerful particle engine!
However I'm still planning on adding a simple GUI system for things like buttons and text at the very least, I should probably add an event system as well.
Another feature I'm working on is quite an important one: Scheduling.
So far it runs at 30 frames per second and it just waits some time between every frame to mantain that, but I need to add a feature that skips the drawing step completely if it runs too slow. So far every object in the game has a few functions like draw() and think(). With the scheduler I'll be able to set every object to think at diferent time periods, like every 1 second or every 1/20 seconds, which will make it a lot faster when I'll have to add AI support to it. With scheduling I can have AI's in Idle states that think every 5 seconds or so, or think every 1/20th second if on full alert, this'll be an enormous performance boost.
For testing the engine out I'm making a small game where you control a dust cloud. Not much to do for now as I'm having some trouble in porting things to the new collision system (what worked back then doesn't work now).
Ok, that's all for now.
maybe I'll update thig blog later this week.
-Spliter
Monday, August 31, 2009
Vacations Ending...
...and I still don't know if I'm accepted into my university!
My classes start 14 of September, and I don't even know WHEN I will know if I will be granted a condo by university.
In the best case in a few days I'll discover that I've been given an aparetement and that I'll have another schoolyear without much worries apart from the classes I failed last year (which can cost me going to uni this year).
Apart from that I'm making another small engine. After working with openGL and SDL, and making a 21.000 lines of code long engine doing this one is actually pretty easy, especially since I'm not making it for various games, but only the basis for some prototypes.
My current prototype is a simple 2D animation system, bundled with an IK system and ability to draw textured mesh on it. It's practically finished apart from few bugs and certain incoherence between parts which makes me correct the code I've written before, but apart from that it all worked. Now I want to make a very simple Animation editor that features: keyframe operations like moving, creating, deleting, and reasigning to another bone (yes, the keyframes are bone independent, they only store the angle of a bone, and the ease). IK based animation building. saving and loading the animation into and from a file. Undo-redo operations.
For now that's it. It's already difficult to make this program since I have little previous experience, and I'll have to make a small GUI (oh, this reminds me, I have to download and instal the openGL font creator and the png import library).
I think it's all for now. I don't have that much time here in poland to be on pc, so the work is going by little bits, and I generally can't be on the pc for more than 4 hours a day, including programming.
Maybe I'll come up with a cool and simple game Idea I'll want to make more than this (quite useless, apart from the experience) animation system.
I'm also interested in the GDC presentations lately, I've seen all of Chris Hecker's presentations and I have to say I must thank him a lot. I learned a ton of things, and he gave me the inspiration to start programming again with his and Chaim Gingold's Advanced Prototypig talk at GDC, which I can certainly reccommend if you have difficulty starting programming again.
That's it for now.
Cya later!
Spliter
My classes start 14 of September, and I don't even know WHEN I will know if I will be granted a condo by university.
In the best case in a few days I'll discover that I've been given an aparetement and that I'll have another schoolyear without much worries apart from the classes I failed last year (which can cost me going to uni this year).
Apart from that I'm making another small engine. After working with openGL and SDL, and making a 21.000 lines of code long engine doing this one is actually pretty easy, especially since I'm not making it for various games, but only the basis for some prototypes.
My current prototype is a simple 2D animation system, bundled with an IK system and ability to draw textured mesh on it. It's practically finished apart from few bugs and certain incoherence between parts which makes me correct the code I've written before, but apart from that it all worked. Now I want to make a very simple Animation editor that features: keyframe operations like moving, creating, deleting, and reasigning to another bone (yes, the keyframes are bone independent, they only store the angle of a bone, and the ease). IK based animation building. saving and loading the animation into and from a file. Undo-redo operations.
For now that's it. It's already difficult to make this program since I have little previous experience, and I'll have to make a small GUI (oh, this reminds me, I have to download and instal the openGL font creator and the png import library).
I think it's all for now. I don't have that much time here in poland to be on pc, so the work is going by little bits, and I generally can't be on the pc for more than 4 hours a day, including programming.
Maybe I'll come up with a cool and simple game Idea I'll want to make more than this (quite useless, apart from the experience) animation system.
I'm also interested in the GDC presentations lately, I've seen all of Chris Hecker's presentations and I have to say I must thank him a lot. I learned a ton of things, and he gave me the inspiration to start programming again with his and Chaim Gingold's Advanced Prototypig talk at GDC, which I can certainly reccommend if you have difficulty starting programming again.
That's it for now.
Cya later!
Spliter
Labels:
Life Ramblings,
Programming,
Random projects
Tuesday, May 12, 2009
Du di dam dam
Vomits, Spewing, Dripping, Splashing, Paint, Water and anything else I can think of, was the only thing I could think of for the last few days, in my free time from rummaging through cupboards, tables, and under the beds in search of documents I was supposed to deliver LAST MONTH!
Ah well...
I'm seriously thinking of implementing some cool looking spewing in my game, but It's really hard to find any kind of graphical and especially video resources for something like that (especially if you don't want to get grossed out, and looked funny at). I could do something like that at home if I had a few buckets of paint, or tinted water, a camera, and a place to do the footage, but although 1 and 2 are available, nr 3 is in short supply.
Apart of that things aren't getting much better. My brother's return to Poland is almost certain since I can't find a job. I'm going to stay here in Portugal, living in a University condo, but I still don't know what about my sister, She could stay here if she wants it, she's the only one of us three that has any working experience, and on top of that she's a girl, which means that getting any job for her isn't as much of a problem as for me and my brother (who is still too young to have a job).
But for now let's live bad things behind. Lately I wrote a bit of a story for my game called Alternate Gravity. I already wrote 4 chapters of a book when I was younger, and a ton of unfinished comic books I gave up on, so at least when writing for this game I have some previous experience. It's shaping up pretty well so far, and I've managed to fill in some of the holes I had from when I organized everything in my mind. Now I see why design docs are so important.
normally when I create a game, I write down all the technical stuff, and create a small technical design doc, thanks to which I can easily make all of that, unfortunately I never actually created any game design doc, so even though I had the technology, and the abilities I never quite knew how to put it together. The worst mistake I do when making a game is that I don't have a final product in my mind. I can see myself playing bits of it, but I never quite know how the entire game will be, and how do I sew those separate levels into one solid gameplay.
So far I can reveal some info about Alternate Gravity (I would hope this blog end up as a gossip source for my game in the future :) ).
1-You start in a lab complex called Newton doing beta tests for an exo-suit.
2-Newton is located at an unnamed part of the world that it NOT America.
3-The gameplay will revolve much around the gravity. The entire environment inside the Newton labs will have it's gravity twisted in various ways.
I'm still working on some of the bosses for the game, and on how will the player look, but I'll probably use an older design I did for a small experimental game with similar concept.
Here's Alternate Gravity in it's experimental form:
http://files.filefront.com/Alternate+Gravityzip/;13745447;/fileinfo.html
(filefront will be used only until I can find a safer location to upload in which I have more control over the content)
Okay! It's time to finish this post and get back to work finding that stupid document I need for my father to let me off the hook (for now).
See you later!
Spliter
Ah well...
I'm seriously thinking of implementing some cool looking spewing in my game, but It's really hard to find any kind of graphical and especially video resources for something like that (especially if you don't want to get grossed out, and looked funny at). I could do something like that at home if I had a few buckets of paint, or tinted water, a camera, and a place to do the footage, but although 1 and 2 are available, nr 3 is in short supply.
Apart of that things aren't getting much better. My brother's return to Poland is almost certain since I can't find a job. I'm going to stay here in Portugal, living in a University condo, but I still don't know what about my sister, She could stay here if she wants it, she's the only one of us three that has any working experience, and on top of that she's a girl, which means that getting any job for her isn't as much of a problem as for me and my brother (who is still too young to have a job).
But for now let's live bad things behind. Lately I wrote a bit of a story for my game called Alternate Gravity. I already wrote 4 chapters of a book when I was younger, and a ton of unfinished comic books I gave up on, so at least when writing for this game I have some previous experience. It's shaping up pretty well so far, and I've managed to fill in some of the holes I had from when I organized everything in my mind. Now I see why design docs are so important.
normally when I create a game, I write down all the technical stuff, and create a small technical design doc, thanks to which I can easily make all of that, unfortunately I never actually created any game design doc, so even though I had the technology, and the abilities I never quite knew how to put it together. The worst mistake I do when making a game is that I don't have a final product in my mind. I can see myself playing bits of it, but I never quite know how the entire game will be, and how do I sew those separate levels into one solid gameplay.
So far I can reveal some info about Alternate Gravity (I would hope this blog end up as a gossip source for my game in the future :) ).
1-You start in a lab complex called Newton doing beta tests for an exo-suit.
2-Newton is located at an unnamed part of the world that it NOT America.
3-The gameplay will revolve much around the gravity. The entire environment inside the Newton labs will have it's gravity twisted in various ways.
I'm still working on some of the bosses for the game, and on how will the player look, but I'll probably use an older design I did for a small experimental game with similar concept.
Here's Alternate Gravity in it's experimental form:
http://files.filefront.com/Alternate+Gravityzip/;13745447;/fileinfo.html
(filefront will be used only until I can find a safer location to upload in which I have more control over the content)
Okay! It's time to finish this post and get back to work finding that stupid document I need for my father to let me off the hook (for now).
See you later!
Spliter
Labels:
Life Ramblings,
Programming,
Random projects
Friday, April 17, 2009
Little update.
Hi!
Long time no see huh?
Well... since this blog is almost as dead as my hopes I decided to update it a little with how things are going.
First, I wanted to apologize for my continuous negligence of TTL2. I do some work every now and then but lately I have difficulties on concentrating. Even my Team Fortress 2 enthusiasm is starting to wilt. I think the obvious reason for that is my slight depression and tiredness. And me still not having a job isn't helping.
Luckily there's still one thing that keeps me sane: Alternate Gravity. So far my biggest programming project. It's a game that I plan on releasing commercially, and if it's not good enough at least I hope it'll give me a kick in the right direction. I have planned much, and much of that is being done. Right now I'm working on perfecting the lighting system, so far it works by brightening everything places that aren't in shadow, but I need something better, so I decided to try another method which consists of rendering the lights BEFORE the screen is drawn, then copy the final product to an offscreen texture, and then render that texture on top of everything simply darkening the places that are in shadow.
Apart from that I'm also working on the editor. I finally got the UNDO and REDO thing to work. but since I want the game do be easily modable I want the editor to parse the config from a file, so I can use the same editor for different projects (as far as those projects are 2D as well).
Every single time I post something on this blog I realize more and more how inappropriate and ironic the name is. Initially it was supposed to be a blog where I could upload doodles and drawings I do from time to time, but for the few past months I haven't done almost anything when it comes to art (Apart from the scarce TTL2 updates). So I was thinking of either changing the name, or go along with it and say that art is a expression of one's feelings, needs and hopes, and so even programming itself can be art!
...I'll most probably go with the second one since changing the name would be too much work :D
I also was thinking of starting a journal on gamedev.net where I could update my progress on alternate gravity and other programming projects and maybe even get some feedback (as opposed to this blog which no one reads ...).
Well... I have test today in about five hours and I've barely studied...
So i'll be going now and maybe soon I'll update this blog with how TTL2 is going and also I was thinking of starting a review column for both movies and games.
See you later!
Spliter
Long time no see huh?
Well... since this blog is almost as dead as my hopes I decided to update it a little with how things are going.
First, I wanted to apologize for my continuous negligence of TTL2. I do some work every now and then but lately I have difficulties on concentrating. Even my Team Fortress 2 enthusiasm is starting to wilt. I think the obvious reason for that is my slight depression and tiredness. And me still not having a job isn't helping.
Luckily there's still one thing that keeps me sane: Alternate Gravity. So far my biggest programming project. It's a game that I plan on releasing commercially, and if it's not good enough at least I hope it'll give me a kick in the right direction. I have planned much, and much of that is being done. Right now I'm working on perfecting the lighting system, so far it works by brightening everything places that aren't in shadow, but I need something better, so I decided to try another method which consists of rendering the lights BEFORE the screen is drawn, then copy the final product to an offscreen texture, and then render that texture on top of everything simply darkening the places that are in shadow.
Apart from that I'm also working on the editor. I finally got the UNDO and REDO thing to work. but since I want the game do be easily modable I want the editor to parse the config from a file, so I can use the same editor for different projects (as far as those projects are 2D as well).
Every single time I post something on this blog I realize more and more how inappropriate and ironic the name is. Initially it was supposed to be a blog where I could upload doodles and drawings I do from time to time, but for the few past months I haven't done almost anything when it comes to art (Apart from the scarce TTL2 updates). So I was thinking of either changing the name, or go along with it and say that art is a expression of one's feelings, needs and hopes, and so even programming itself can be art!
...I'll most probably go with the second one since changing the name would be too much work :D
I also was thinking of starting a journal on gamedev.net where I could update my progress on alternate gravity and other programming projects and maybe even get some feedback (as opposed to this blog which no one reads ...).
Well... I have test today in about five hours and I've barely studied...
So i'll be going now and maybe soon I'll update this blog with how TTL2 is going and also I was thinking of starting a review column for both movies and games.
See you later!
Spliter
Labels:
Life Ramblings,
Random projects,
Two Thirds Life 2
Subscribe to:
Posts (Atom)
