• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
  • entries
    46
  • comments
    91
  • views
    64127

Project B - More On The Update and Post-Processing Framework

Sign in to follow this  
Followers 0
Squared'D

2145 views

Engine Post-Processing Framework



I feel really bad about my last post. I feel like I made it too quickly and I did a poor job of explaining things. Because of this, I'm going to try to explain things a little better.I want to give more details of what is in the demo that I posted earlier. Though I talk a lot about the GUI, actually the first thing that I worked on was the post-processing framework. What is post-processing, basically with it, you can achieve all sorts of effects by running the entire completed scene through another set of shaders. You can use it to achieve effects like glow, motion blur, and many other things.

Here's an example of glow being created as a post-processing effect. From Genesis SEED, out IGF entry last year

saturn+sceenshot+small.png


This was the first system that I worked on because I wanted to fix a bug in it. I also wanted to design a really robust framework capable of handling many different kinds of effects.

How to do Post-Processing



The basic idea of post-processing is first render the screen to an auxiliary buffer instead of the back buffer. This auxiliary buffer can then be set as a texture to a shader. Then render a full screen quad of the texture using some effect shader. To perform different effects, you may need more than one auxiliary buffer. This is shown below.

post-processing+framework+1.png

The demo that I included in my last post used a glow effect. To perform glow, it uses the alpha channel to determine which areas should glow. The scene is first rendered to an auxiliary buffer. Then I use a 1/4 size buffer and render the entire scene to that buffer using a filter to only write pixels whose alpha value is set. Then I perform a vertical blur and then a horizontal blur. The final blurred texture is combined with the original image and then rendered to the back buffer. If you download the demo from my last post, you can take a look at the HLSL shaders.

Making a good post-processing framework isn't that hard. There's a good article on the subject here.

Some Cons



You have to be careful though. As you will be rendering the entire screen multiple times, you can lose a lot of speed. One way to speed things up is by using 1/2, 1/4 or even 1/8 size intermediary auxiliary buffers.

I hope this was useful. Check out my previous post to download the demo and see this and my GUI in action.

Previous Post:
Here are some screen shots.


ss1.png

ss3.png

ss2.png

2
Sign in to follow this  
Followers 0


9 Comments


I like the information and screenshots, especially the space screenshot. Is that from your game or is it more of a test screen?

1

Share this comment


Link to comment

The space screenshot is from our IGF entry last year. I really want to finish that game, but it was put on hold by another team member. It's too big of a project for me to do on my own so it's in limbo now. Project B is a different game, but it'll use a lot of the same source code. Unfortunately, the project just started and I don't have any screen shots yet.

0

Share this comment


Link to comment

Did you make the GUI or did you use a library? Do you use FreeType or some bitmap font generator? How do you support unicode? Is it necessary to use the multi-byte character set or unicode character set option in Visual Studio?

1

Share this comment


Link to comment
I wrote the GUI by myself except for the system config that uses DXUT. I haven't finished all of the controlsyet, but it works fairly well. I forgot to add a credit, but the for fonts, I used the font bitmap generator from AngelCode.com. Internally, the code uses wide chars for most things except when connecting with other librarieslike rapidxml. The AngelCode bitmap font generator can make all sorts of fonts in many differentlanguages. I think the multibyte option in visual studio defines how TCHAR is treated and how the built in string functions work. If you only use wchar_t or char, I don't think it helps. You'll need to use TCHAR and it's respective functions for those compiler options to make a difference. That may also change which version of the win API functions are called. In win32, there are wide char and ascii versionsof everythin. For example, there is a SetWindowTextAand SetWindowTextW. Depending on the compiler settings,it will use to prepocessor to make SetWindowText be one of those.
1

Share this comment


Link to comment

wchar_t is 2 bytes on Windows, so doesn't that mean that not all Chinese characters are supported? Or are they just UTF-16 encoded using more than one character? Is it really ASCII or is it UTF8 encoded? I don't want to use wchar_t because it's a different size on Linux/Mac.

1

Share this comment


Link to comment
They may actually be using UTF-16, which will use multiplebytes if the value goes to high, but I'm not sure. The most common languages will all fit in 16bits including Chinese and Korean. Some less common chinese glyphs may need more bits, but the most common ones don't. Actually in USC2 which is 16bit unicode,the language that uses the most space is Korean. It's because of the special way they combineletters into syllable blocks. You bring up an interesting point. I've done most of my work on windows and am comfortable with it. I need to think about other platforms more though.
1

Share this comment


Link to comment
I also use my own string class that internally stores things as widw char but it can convert betweenchar and multibyte.
0

Share this comment


Link to comment

I primarily work on Apple computers and so I try to keep projects multi-platform. It is very tempting when developing on windows to only focus on windows because of the large installed user base.

Still there are gamers on a ton of different platforms.

1

Share this comment


Link to comment
You are right. I need to be more multi-platformminded.I've been trying to do that with my latest code.
1

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now