Sign in to follow this  
Followers 0
DF Oliver

Programming Update #1

341 posts in this topic

...and this is how you linearize a ring buffer! Hi my name is Oliver Franzke and you may remember me from YouTube classics such as "Know which languages your boss speaks", "Programming with the Stars" and "Euclidean Fun in Hyperbolic Space"!

I welcome you to the first programming update of the Double Fine Adventure game! We want to give you guys some insight into what the programming team (which currently is mostly me) is up to and how the game works from a technology standpoint.

So how do you start to program a brand new adventure game? Well first you have to understand more about what you are actually creating, so a bunch of programmers had a meeting with Tim and Ron to talk about what the game will be like. It won't come as a surprise to you that we are planning to implement a 2D point-and-click adventure game. There will be single and multi-screen environments (which were called 'Rooms' in SCUMM games) with multiple layers which can parallax when the camera moves. The walkable areas for characters will be defined by complex polygons. As programmers we want to make life easy for the content creators, so that artist can rapidly add artwork to an environment and tweak it. Conversations between different characters should be authorable as simple linear sequences, in order to achieve fast iteration times. These are just a few examples of what we talked about.

After we had these requirements written down we started to think about what data formats will be necessary to describe all of information and which kind of systems will be required to make it work. Right now the plan is to spend the next 6 weeks implementing the first version of a simple adventure game 'engine' and a authoring tool. Neither the engine nor the editor will be done then (in fact they will be pretty rough around the edges), but we hope that content creators can start using the tech to create environments, add some artwork to them and place characters and interactable objects.

So after filling a lot of paper with notes and scribbling things on whiteboards I finally started implementing basic systems last week. Right now it is already possible to create a single or multi-screen environment with a character walking around in it, which is super exciting! In fact I'm very proud to present you the very first screenshot of my little prototype adventure game I'm creating to test the systems. It's called 'Redbot's Adventure' and it is about a red robot on a strange colorless planet filled with mysterious pyramids. Redbot really wants to grow a mighty yellow beard but he doesn't know how, so he'll need our help!

Disclaimer: 'Redbot's Adventure' is not the final product and the artwork has not been created by artists. It simply is my creation to test the technology!!!

dfaredbot1.png

Okay that's it for now. I hope you found this post interesting. Please feel free to ask questions. Next time I'll talk a little bit more about the technological foundation of the project, so stay tuned for that.

Hut ab, das geht ja gut ab!

Oliver!

Share this post


Link to post
Share on other sites

So awesome. Thanks for putting this up Oliver!

We have footage of this too but you may not see it in the episodes for a bit. Videos will always be a little behind the actual dev.

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.
Disclaimer: ‘Redbot’s Adventure’ is not the final product and the artwork has not been created by artists. It simply is my creation to test the technology!!!

Share this post


Link to post
Share on other sites

I think it could be interesting as 2D gameplay in 3D environments. It broadens the visual possibilities.

It sounds definite, but I'll ask: has the decision been made to definitely not pursue a third party engine?

Share this post


Link to post
Share on other sites

Great to see the making of a game engine from scratch! Can't wait to see more.

Are you thinking of using a 3D engine to display 2D sprites?

Share this post


Link to post
Share on other sites
There will be single and multi-screen environments (which were called 'Rooms' in SCUMM games) with multiple layers which can parallax when the camera moves. The walkable areas for characters will be defined by complex polygons.

If I understand this correctly, it will work like the recently released Fez, where if you walk (click) at the side of the screen, and instead of the usual one second black screen and then popping in another screen the camera will shift and present you the next room?

If the answer is yes, was Fez in any way the inspiration for this system or just a coincidence in similarity?

And wouldn't this be called 2.5D than 2D? Since when the camera shifts you should be able to see the angle of the corner of the room you enter.

Also another question, does this system means that all the areas of the game will be seamlessly connected?

Sorry if the many questions, I just want to see if I got this right, or I'm reading things that aren't there.

Share this post


Link to post
Share on other sites
I think it could be interesting as 2D gameplay in 3D environments. It broadens the visual possibilities.

It sounds definite, but I'll ask: has the decision been made to definitely not pursue a third party engine?

This will be the topic of my next post... :)

Great to see the making of a game engine from scratch! Can't wait to see more.

Are you thinking of using a 3D engine to display 2D sprites?

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

And here I was just thinking "boy it would be nice to hear something about the game engine development" and low and behold you post this.

You my good sir have just made my day :)

Please keep us informed ;)

Share this post


Link to post
Share on other sites

If I understand this correctly, it will work like the recently released Fez, where if you walk (click) at the side of the screen, and instead of the usual one second black screen and then popping in another screen the camera will shift and present you the next room?

If the answer is yes, was Fez in any way the inspiration for this system or just a coincidence in similarity?

And wouldn't this be called 2.5D than 2D? Since when the camera shifts you should be able to see the angle of the corner of the room you enter.

Also another question, does this system means that all the areas of the game will be seamlessly connected?

Sorry if the many questions, I just want to see if I got this right, or I'm reading things that aren't there.

What I mean by 'multi-screen environment' is that the camera will scroll when you reach the end of the screen. I don't think that the game will only have one gigantic environment though. I'm pretty sure there will be doors and other transitional areas which when triggered will fade out the current screen before fading into the next environment.

It's really early in the project, so let's see what crazy ideas Tim comes up with... :)

I hope this answers your question.

Share this post


Link to post
Share on other sites

Cool! Thanks for the update!

Hmmm...my prognosis for Redbot's success at growing a beard is not good. I mean, just looking at his chest, you can pretty much say he's...screwed.

*ducks whatever rotten fruit was just thrown at him*

Share this post


Link to post
Share on other sites
And here I was just thinking "boy it would be nice to hear something about the game engine development" and low and behold you post this.

You my good sir have just made my day :)

Please keep us informed ;)

Thanks dude. I'm glad you liked the post!

Share this post


Link to post
Share on other sites

Ho this is very interesting! Thanks for letting us know how it's don

I'm a c++ programmer but I never worked at all in the game industry. It's really fun to see how a game engine is actually done :)

Math

Share this post


Link to post
Share on other sites
And wouldn't this be called 2.5D than 2D? Since when the camera shifts you should be able to see the angle of the corner of the room you enter.

It means more that the screen has multiple backgrounds and maybe something infront the character.

So when the screen moves to the side the backgrounds move at different speed so it gives illusion that the room isn't flat.

Share this post


Link to post
Share on other sites

I hope this answers your question.

Yeah I think I get it now, thanks, is a lot simpler than what I had in mind.

Well only thing I can add at this point is that a seamless environment, even for one area (let’s say a boat with multiple screens) would make for great real time puzzle opportunities, since while you are at one room something is happening in another room in real time, just saying, most adventure games don’t have that luxury with static movement between screens.

Share this post


Link to post
Share on other sites

Really awesome to see this kind of thing. Thanks for the update, keep at it.

Share this post


Link to post
Share on other sites
multiple layers which can parallax

For people who don't know what exactly this means, what the effect is...

...see for example this page and move your mouse around.

See also this Wikipedia article.

I've personally used the Plax jQuery plugin, it's easy to use and works great.

Share this post


Link to post
Share on other sites

Sweet. This is the kind of stuff I've been waiting for. Way cool proof of concept. What goes into making something seemingly so simplistic?

Share this post


Link to post
Share on other sites
multiple layers which can parallax

For people who don't know what exactly this means, what the effect is...

...see for example this page and move your mouse around.

See also this Wikipedia article.

I've personally used the Plax jQuery plugin, it's easy to use and works great.

That's cool. Thanks Norbert.

Share this post


Link to post
Share on other sites

Thanks for the update! I've been a bit out of touch and maybe getting ahead of myself but I'm assuming the shapes in the environment would be a way of representing structures or objects or at least areas that wouldn't be passable, does that serve a function in terms of programming the movement like a form of collision or is that simply for the content implementation side or does that come much later? Again probably getting way ahead of myself but it's kind of exciting because this is exactly the kind of thing I wanted to see more in detail! Thanks again, this is really interesting stuff!

Share this post


Link to post
Share on other sites
...and this is how you linearize a ring buffer! Hi my name is Oliver Franzke and you may remember me from YouTube classics such as "Know which languages your boss speaks", "Programming with the Stars" and "Euclidean Fun in Hyperbolic Space"!

I thought you were awesome until I realized it was a Simpsons reference and those videos don't really exist. And here I wanted to know how much fun Euclidean geometry was in hyperbolic space. Boo.

So... you can move a sprite over backgrounds now eh? Impressive! :P

Just kidding, I know how complex it is to program a new engine from scratch. Keep up the good work! Oh, and I'm curious to see the class design behind it. :)

Share this post


Link to post
Share on other sites

Have you got camera based depth of field or just a blurred texture with alpha on the near plane?

Nice to see some development posts like this.

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?

multiple layers which can parallax

For people who don't know what exactly this means, what the effect is...

...see for example this page and move your mouse around.

See also this Wikipedia article.

I've personally used the Plax jQuery plugin, it's easy to use and works great.

The first link is broken I think. I guess a simple way to explain it is that things which are further appear to move slower than things which are closer to an observer based on the laws of perspective. Parallax scrolling is a technique which tries to simulate this.

Share this post


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