Jump to content
Double Fine Action Forums
Sign in to follow this  
DF Oliver

Programming Update #1

Recommended Posts

Wow great update, this project is getting more interesting by the day. Hmm seems it wasn't a bad choice to throw money at this :D

Share this post


Link to post
Share on other sites

I'll be looking forward to the Redbot's Adventure kickstarter! I'm good for $10!

Share this post


Link to post
Share on other sites

Hi Oliver! It's a pleasure to meet you and welcome to the forum (aka The Lions' pit)!

First of all thank you for the info, you guys are doing such a tremendous job at keeping us in the loop and everything you show us is simply enthralling beyond words. Your availability to confront yourself with the community (and patience!) is absolutely inspiring!

I am no programmer, but seeing the first steps of such a long awaited return of the adventure genre puts a smile on my face.

Did you guys already decide how the multi-screen rooms will scroll?

1- Will the engine wait for the character to reach the edge of the screen, then scroll to the next?

2- Will the character always be kept in the center of the screen while the scrolling happens?

Personally I prefer the second option, as it is more fluent and elegant as a solution.

Also another question, since you are working at the engine, have you guys thought about programming a feature to display the game with "old skool" graphics? I am talking jagged lines and pixels as big as a melon here!

Basically it's what was done in the Xbox LIVE version of Monkey Island (Monkey Island SE), where the player could press the Back button to activate the original version's graphics. I thought that would be cool and fairly easy to implement?

Share this post


Link to post
Share on other sites

Interesting stuff. Can't wait to hear more. This is a big reason why I signed up; to see the process unfold!

Share this post


Link to post
Share on other sites

Oliver,

thanks for all the technical information! As a programmer I'm excited to read about your posts developing the game.

Danke dafür!

Share this post


Link to post
Share on other sites
Finally, been waiting for an update like this!

I take it you are using textured polygons for the 2D layers then, and calculating parallax scrolling based on the relative Z-coordinates of each said flat layer?

The parallaxing amount is defined by the size of the layer. For example if the background has a width of 1 and the foreground has a width of 2, then it'll be moved so that the edges of the layers line up when the camera is all the way left or right, if that makes sense...?!

So you're grouping several graphical elements onto a layer which will have it's 'speed' defined by the size you specify for the layer? Or is the size of the layer defined by the measurements of the texture that is used? Resulting in one layer per parallax element spanning the whole screen?

And you should definitely look into the 3D processing pipelines of OpenGL. Since Windows Vista modern 3D GPUs are surprisingly slow when it comes to processing pure High Resolution 2D textures since the removal of the 2D Hardware Acceleration API. A 3D game with fixed camera will have much better loading times.

Share this post


Link to post
Share on other sites

Danke Oliver! (That's about all German I remember from school, but I'm glad I got to use it ;-) )

This is impressive for just a couple of weeks work I presume(?).

My programming knowledge is limited, just studied a couple of courses but I would like to hear more. Is this all done in C++ or something else?

When is Redbot's adventure being released? :-D

Share this post


Link to post
Share on other sites

This is impressive for just a couple of weeks work I presume(?).

Couple weeks? :D Ekhem...

Let me point out that Oliver had everything you see in that screenshot working in 1 day.

Share this post


Link to post
Share on other sites
Finally, been waiting for an update like this!

I take it you are using textured polygons for the 2D layers then, and calculating parallax scrolling based on the relative Z-coordinates of each said flat layer?

The parallaxing amount is defined by the size of the layer. For example if the background has a width of 1 and the foreground has a width of 2, then it'll be moved so that the edges of the layers line up when the camera is all the way left or right, if that makes sense...?!

So you're grouping several graphical elements onto a layer which will have it's 'speed' defined by the size you specify for the layer? Or is the size of the layer defined by the measurements of the texture that is used? Resulting in one layer per parallax element spanning the whole screen?

And you should definitely look into the 3D processing pipelines of OpenGL. Since Windows Vista modern 3D GPUs are surprisingly slow when it comes to processing pure High Resolution 2D textures since the removal of the 2D Hardware Acceleration API. A 3D game with fixed camera will have much better loading times.

This is what I also got out of that, as for the OGL part I think they are indeed doing something of the sort using flat textured polygons. I'm basing this on a rough interpretation of this comment: (since it's going to be multi-platform I doubt they would code it in DX, or develop their own api for it be I'd be impressed if they did)

Thanks! :) Everything you see is 2D and I think the final game won't use 3D models. I mean in the end of the day the graphics card gets a list of triangles to display, so the line between 2D and 3D is somewhat blurry these days anyway.

Share this post


Link to post
Share on other sites
taumel and raphier, check out the chrome app store online and see.. Bastion, Angry birds, etc.

Those both games are running on Chromes Native Client SDK, a compiled browser plugin, which is limited to Chrome only. Angry Birds has A HTML5 version. But it is too highy optimized for Chrome, for best performance. In other words due huge imparity in browsers, only Chrome is considered as the only viable game environment at this moment. Stand alone games again do not need to be run as plugins, but may converse straightly with the OS libraries, which is why first and foremost all major game releases, are standalone applications.

I know html5 is cool kids stuff, but not necessary a valid option for a game of this magnitude.

So we'll use Chrome. I don't see the issue.

Share this post


Link to post
Share on other sites

Hi Oliver

Thanks a lot for your post and answers. As a (Java / Webapp) developer I was hoping to get such insights into methods and techniques used to develop a game :)

Something that would interest me (maybe for a futur dev-post):

In my opinion, one of the most difficult aspects in software development is the whole planning. Since you are constantly creating new things you have never done before it's hard to fix dates or time and effort. Things that seemed easy at first can get much more complex, solutions that seemed good while planing can turn out to be impractical, ...

How do you at DF plan and how do you handle (the probably inevitable) changes and delays in certain points?

... also an interesting topic: How do you handle testing (e.g. unittests)?

Thanks again for your time :)

Bart dran, kommt gut an!

Share this post


Link to post
Share on other sites
Finally, been waiting for an update like this!

I take it you are using textured polygons for the 2D layers then, and calculating parallax scrolling based on the relative Z-coordinates of each said flat layer?

The parallaxing amount is defined by the size of the layer. For example if the background has a width of 1 and the foreground has a width of 2, then it'll be moved so that the edges of the layers line up when the camera is all the way left or right, if that makes sense...?!

So you're grouping several graphical elements onto a layer which will have it's 'speed' defined by the size you specify for the layer? Or is the size of the layer defined by the measurements of the texture that is used? Resulting in one layer per parallax element spanning the whole screen?

And you should definitely look into the 3D processing pipelines of OpenGL. Since Windows Vista modern 3D GPUs are surprisingly slow when it comes to processing pure High Resolution 2D textures since the removal of the 2D Hardware Acceleration API. A 3D game with fixed camera will have much better loading times.

This is what I also got out of that, as for the OGL part I think they are indeed doing something of the sort using flat textured polygons. I'm basing this on a rough interpretation of this comment: (since it's going to be multi-platform I doubt they would code it in DX, or develop their own api for it be I'd be impressed if they did)

Thanks! :) Everything you see is 2D and I think the final game won't use 3D models. I mean in the end of the day the graphics card gets a list of triangles to display, so the line between 2D and 3D is somewhat blurry these days anyway.

He already said they are using openGL even if you are showing 2D with that it is still in a 3D space.

It has nothing to do with the old 2D hardware api that you had in windows.

Share this post


Link to post
Share on other sites

Great update, Oliver, thanks for taking the time to come talk to us!

I'm excited by the idea of the engine being able to tackle big, multi-screen areas as well as single rooms; personally, I think those are a must in adventure when it comes to creating a sense of space when your character's out in a big open area, because otherwise you can end up feeling constrained, particularly when you throw in the usual limitations on movement in a 2D adventure. I always found the early King's Quest games to feel a bit claustrophobic and hemmed-in because whilst in theory you're exploring this big expansive kingdom in practice you're going through a series of single-screen "rooms".

Share this post


Link to post
Share on other sites

There is no hidden 3D environment really.

Does that make sense at all?

Ok.. I think maybe to be absolutely sure.. I need to see the image of the environment from the side. Is it just one line or is so truly 2D that it becomes invisible from the side?

I need to know that it is 100% 2D. Entirely. =)

Share this post


Link to post
Share on other sites

Wow, this is way more awesome than I would have thought it to be. I've always been interested in game creation, but my brain simply does not wrap itself around programming (beyond very basic html and fumbling around expressions in 3dsmax and After Effects).

I think this is a big part of the reason I backed the project: the "entire sausage, warts 'n' all" thing. It's probably not likely that I shall get into game design any time soon, so being able to live vicariously through an entire dev/design process is fascinating to me :)

Also, it's impressive the number of responses this thread got in around 12 hours. Oh wait, that's how DFA rolls!

Share this post


Link to post
Share on other sites
[...]

He already said they are using openGL even if you are showing 2D with that it is still in a 3D space.

It has nothing to do with the old 2D hardware api that you had in windows.

Using openGL doesn't necessarily mean you're working in a 3D space. A 2D projection matrix with a z-depth of 0 is easier to handle because the GPU only has to output the final texture but instead of using CPU time for creating this you could use the GPU, that has been highly optimized to compose myriads of objects in z-depths in real-time. And you'll also get the handling of object draw order for free with a fixed camera in 3D space.

Share this post


Link to post
Share on other sites
Also another question, since you are working at the engine, have you guys thought about programming a feature to display the game with "old skool" graphics? I am talking jagged lines and pixels as big as a melon here!

Basically it's what was done in the Xbox LIVE version of Monkey Island (Monkey Island SE), where the player could press the Back button to activate the original version's graphics. I thought that would be cool and fairly easy to implement?

That is highly unlikely, since it would double the asset creation time, that would basically require to draw everything twice, once "HD" and once "old Skool".

Low resolution graphics were created by hand, pixel per pixel to look good with the limitations of the hardware of the era. If I'm not mistaken, the original MI Guybrush was like 47 pixels high and 22 pixels wide or so (and a little bit extra for animation), since it was made for VGA (320 x 240 and it only had 256 colors).

What MI SE did was redo all the graphics and simply switch between the new versions and the old ones on the fly (it's a little bit more complicated than that I bet...)

There is no filter to create a low resolution version of the graphics that you can just turn on and off... that I know of, hell, perhaps DF and their Software Sorcerers will decide to prove me wrong and create one.

But I digress, what you are asking is fairly work intensive for the artists and while I do agree that it would look awesome, I'd rather they concentrate on the main game and the art.

Just my 2 cents.

Share this post


Link to post
Share on other sites

Thanks a lot for the update, Oliver, and for all the responses. I'll be waiting for more updates and more in depth details, down to whether you're using Glee or Glew or whatever. Keep up the good work, and great programmer art there.

Share this post


Link to post
Share on other sites

Thanks! :) Everything you see is 2D and I think the final game won't use 3D models. I mean in the end of the day the graphics card gets a list of triangles to display, so the line between 2D and 3D is somewhat blurry these days anyway.

Agree with this. I was playing Book of Unwritten Tales ( http://www.unwritten-tales.com/# ), and it was very hard at times to tell what items were 2D + which were 3D. There would be items that I thought were part of the 2D background, but the characters shadow would pass over them and distort as though they were 3D. I guess these items had some kind of hidden 3D counterpart that shadows were projected onto. There was some clever use of lights to ensure that shadows wouldn't be projected onto items that the designers didn't want them to.

What do you expect some of the hardest programming tasks to be? I guess there's no need for advanced rendering/AI techniques to be used, so would the hardest bits be getting the right animations to appear at the right times + interact with the environment, natural looking path-finding, designing tools, integrating puzzles, or something else?

Thanks for the update, look forward to seeing more on this topic.

Share this post


Link to post
Share on other sites

Thanks for the update Oliver

I'm pretty pleased with myself - I can actually follow along with what you are talking about! All of the time I spend around programmers must finally be having an effect on me.

Also, I'm thoroughly impressed you got this up and running in a day - kudos to you sir!

Share this post


Link to post
Share on other sites
Let me point out that Oliver had everything you see in that screenshot working in 1 day.

German programming in the house, ya! [inspiration taken from

ad]

[German / Deutsch]Danke Oliver für den Interessanten aber verständlichen Forum Eintrag![/German / Deutsch]

- -

Great to see a lot of insightful updates. Though Tim said we get not only to see the sausage made, but shoved in our face, I was on the impression that this only was for the video documentary and the forum was used for direct feedback from fans to developer. I'm glad to see DoubleFine & Tim really comitting to a lot of these promises. I can see me kickstarting whatever you plan next (as long as I can play it on a platform I own), just because of your fullfillment! Manly Tears!

Share this post


Link to post
Share on other sites
Looks too 3D. I hope this is pre-rendered 2D that just looks like 3D. If not, please remove a D.

Hope that too, my favourit World be a 2D Cartoon-Style

Share this post


Link to post
Share on other sites

Thanks! :) Everything you see is 2D and I think the final game won't use 3D models. I mean in the end of the day the graphics card gets a list of triangles to display, so the line between 2D and 3D is somewhat blurry these days anyway.

Agree with this. I was playing Book of Unwritten Tales ( http://www.unwritten-tales.com/# ).

Except claustrophobic "rooms", that looks really good blend of many technical pieces,but way too 3D.

Share this post


Link to post
Share on other sites

Oooh! Prototype! Cool that you got this working in one day.

Maybe redbot should make a cameo in the final product somewhere...

Share this post


Link to post
Share on other sites
Looks too 3D. I hope this is pre-rendered 2D that just looks like 3D. If not, please remove a D.

Hope that too, my favourit World be a 2D Cartoon-Style

Bear in mind that Oliver isn't concentrating on the art here - as I understand it, he's using that simplistic 3D style as a placeholder because he can do it quickly and simply, not because that's what's going to be used in the final product. (If I'm reading this thread right it's actually easier to use 3D placeholder graphics than 2D ones in modern development environments - is that correct?)

Share this post


Link to post
Share on other sites
Looks too 3D. I hope this is pre-rendered 2D that just looks like 3D. If not, please remove a D.

Hope that too, my favourit World be a 2D Cartoon-Style

Bear in mind that Oliver isn't concentrating on the art here - as I understand it, he's using that simplistic 3D style as a placeholder because he can do it quickly and simply, not because that's what's going to be used in the final product. (If I'm reading this thread right it's actually easier to use 3D placeholder graphics than 2D ones in modern development environments - is that correct?)

His graphics are 2D images which he made fast with some drag and drop 3d models in maya or what tool he used.

Putting several 3d models next to eachother on a 2D plane is pretty easy to make as long as you want them to look like cone or few other standard shapes.

Gives him probably a better test then a image with just some flat squares from a paint program or something.

Share this post


Link to post
Share on other sites

Did you guys already decide how the multi-screen rooms will scroll?

1- Will the engine wait for the character to reach the edge of the screen, then scroll to the next?

2- Will the character always be kept in the center of the screen while the scrolling happens?

Personally I prefer the second option, as it is more fluent and elegant as a solution.

This is definitely a design question, but right now the camera starts to pan when you reach the scroll threshold which is a few hundred pixels away from the edge. This way you can always see what's ahead without panning the camera all the time. So the answer is basically 1.5 :-P

Also another question, since you are working at the engine, have you guys thought about programming a feature to display the game with "old skool" graphics? I am talking jagged lines and pixels as big as a melon here!

Basically it's what was done in the Xbox LIVE version of Monkey Island (Monkey Island SE), where the player could press the Back button to activate the original version's graphics. I thought that would be cool and fairly easy to implement?

I'm glad you liked this feature, since I programmed it. And it definitely was a lot of fun to implement. :-)

As far as the 'old-skool' mode goes it will be tricky to get the same effect, since we don't have low-res art to start with. The visual style of the game hasn't been finalized yet, so let's see what the artists come up with. I'm sure it will be absolutely awesome though!

Share this post


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

×
×
  • Create New...