Adventures in Game Development Chapter 21

Latest news covering the Elysian Shadows project, The Chaos Rift forums, and our affiliate developers and projects. News also appears in the website's new section.

Moderators: News Mods, Elysian Shadows Team

Adventures in Game Development Chapter 21

Postby Falco Girgis on Mon Jan 13, 2014 4:24 pm

IT'S HERE!!!


DCEmulation.org coverage:
http://www.dcemulation.org/?title=Welcome_to_DCEmulation%21
DCEmulation.org wrote:Team Elysian Shadows has just released Adventures in Game Development Chapter 21, a feature-length look at the inside development of Elysian Shadows, a top-down Chrono Trigger-influenced indie RPG for Dreamcast as well as various other platforms.

The video spans almost an hour and a half, and looks at development from the perspectives of the artists, musicians, and software developers. A dynamic lighting engine, 3D audio engine, several pathfinding algorithms, various tilesheets, and two background music tracks are created and demonstrated within the video, complete with the trademarked antics and dysfunction that made the series so appealing to their Youtube audience.

While the Dreamcast build is not actually demonstrated in the video (we broke a few things adding the lighting and shaders), it is mentioned many times. The team jokes about having an optional boss that corrupts your VMU's non ES save files until you beat him, and forcing the player to manually invoke Lua's garbage collector by pushing the R-Trigger to clean up after Tyler's scripts.

Please note that this game is cross-platform at its core, originally came into existence as a Dreamcast-exclusive, and will always be a Dreamcast game in my own heart. We're looking forward to continuing support for our favorite little white box.


I hope everyone enjoyed the new format, because we sure did... Zero fucks were given. :mrgreen:
"So what happens if the Elysian Shadows Kickstarter fails?"
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
 
Posts: 10690
Joined: Thu May 20, 2004 3:04 pm
Location: Studio Vorbis, AL

Re: Adventures in Game Development Chapter 21

Postby bbguimaraes on Mon Jan 13, 2014 4:37 pm

Oh yeah! Already downloaded and will watch as soon as possible. Loved that it's 1h20 long! And really nice that you guys got covered on DCEmulation.

And just because this is the first time this happens: first!
User avatar
bbguimaraes
Chaos Rift Junior
Chaos Rift Junior
 
Posts: 324
Joined: Wed Apr 11, 2012 5:34 pm
Location: Brazil

Re: Adventures in Game Development Chapter 21

Postby short on Mon Jan 13, 2014 6:00 pm

Zero fucks were given.


That's the way we like it!
My github repository contains the project I am currently working on,
link: https://github.com/bjadamson
User avatar
short
ES Beta Backer
ES Beta Backer
 
Posts: 569
Joined: Thu Apr 30, 2009 3:22 am
Location: Oregon, US

Re: Adventures in Game Development Chapter 21

Postby Trask on Mon Jan 13, 2014 11:22 pm

So question about the dynamic audio... what will be the trigger for the fade in/out. Let's take a "random encounter" with an enemy for example... will it be the moment you collide with their "vision" that will begin the fade out of the BG music and/or will it be dependent as to how close you are to that encounter

I have it in my head for some reason that as you approach a range near the enemy, the music will start to fade, but if you back up, maybe the music will turn back up and not fully fade into the battle music since you didn't get within a certain range, possibly as another indicator that shit is about to go down?

Or is it simply, bam, you triggered an enemy so the BG music fade out begins and the battle music fade in starts and that's the way it'll be until you get out of the area?

Guess I'm basically asking, what world of options does this open up to include music as much a part of the level as the sprites and objects themselves in terms of s gameplay mechanic.

Hope that makes sense, god damn I'm tired....
MarauderIIC wrote:You know those people that are like "CHECK IT OUT I just made Linux run on this piece of celery [or other random object]!!"? Yeah, that's Falco, but with ES.

Dear god, they actually ported ES to a piece of celery!

Martin Golding wrote:"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
User avatar
Trask
ES Beta Backer
ES Beta Backer
 
Posts: 816
Joined: Wed Oct 29, 2008 9:17 pm
Location: Pittsburgh, PA

Re: Adventures in Game Development Chapter 21

Postby hurstshifter on Tue Jan 14, 2014 9:55 am

I have the weirdest boner right now


In all honesty though, this is one of the best episodes of AiGD. Back to the roots of this series, just plain old development talk. I'm super impressed with the lighting effects you are working on. Do you suspect this will be a problem implementing on Dreamcast?
"Time is an illusion. Lunchtime, doubly so."
http://www.thenerdnight.com
User avatar
hurstshifter
ES Beta Backer
ES Beta Backer
 
Posts: 745
Joined: Mon Jun 08, 2009 9:33 pm
Location: Boston, MA

Re: Adventures in Game Development Chapter 21

Postby dandymcgee on Tue Jan 14, 2014 11:07 am

Trask wrote:So question about the dynamic audio... what will be the trigger for the fade in/out. Let's take a "random encounter" with an enemy for example... will it be the moment you collide with their "vision" that will begin the fade out of the BG music and/or will it be dependent as to how close you are to that encounter

I have it in my head for some reason that as you approach a range near the enemy, the music will start to fade, but if you back up, maybe the music will turn back up and not fully fade into the battle music since you didn't get within a certain range, possibly as another indicator that shit is about to go down?

Or is it simply, bam, you triggered an enemy so the BG music fade out begins and the battle music fade in starts and that's the way it'll be until you get out of the area?

Guess I'm basically asking, what world of options does this open up to include music as much a part of the level as the sprites and objects themselves in terms of s gameplay mechanic.

Hope that makes sense, god damn I'm tired....

Interesting idea.. My initial assumption was that the music would remain intense until you killed the enemy, during which time it would be A*-ing your ass to hell and back so you can't outrun it. But since the example tracks were 3 levels of intensity, it would be neat to allow the player to "Oh shit!" and back out before the aggro track faded in and avoid trouble.. for now.
Falco Girgis wrote:It is imperative that I can broadcast my narcissistic commit strings to the Twitter! Tweet Tweet, bitches! :twisted:
User avatar
dandymcgee
ES Beta Backer
ES Beta Backer
 
Posts: 4911
Joined: Tue Apr 29, 2008 4:24 pm
Location: New Hampshire

Re: Adventures in Game Development Chapter 21

Postby Falco Girgis on Tue Jan 14, 2014 12:01 pm

We really need to get Connor's rockstar ass in here to respond to this topic. Obviously the engine can handle anything that was proposed here...

hurtshifter wrote:In all honesty though, this is one of the best episodes of AiGD. Back to the roots of this series, just plain old development talk
Yeah, something about doing this video just felt... right. It felt like it used to feel when we did them back during Chapters 15 and earlier... More like us just doing our thing with the camera rolling and less like us trying to create some sort of polished documentary... which we honestly hated doing.

You will never see another interview segment in AiGD again.

hurtshifter wrote:Do you suspect this will be a problem implementing on Dreamcast?
Actually, yes, but that hasn't done anything but excite me. The dynamic shadows require a programmable pipeline, as they are applied in the fragment shader. The Dreamcast has a fixed-function pipeline, so these will be impossible to pull off.

Everything else though, is completely possible. It's a question of how much of its limited resources we are able to delegate towards vertex lighting with so much other shit going on in the engine... If I were making a tech demo of a static scene and no real logic going on, I would be able to pull off everything other than the shadows (including the bumpmapping).

Now how realistic it is to have all of the effects in an actual game environment still remains to be seen... It will be a serious challenge, indeed. I imagine I will have to brush up on my SH4 assembly.
"So what happens if the Elysian Shadows Kickstarter fails?"
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
 
Posts: 10690
Joined: Thu May 20, 2004 3:04 pm
Location: Studio Vorbis, AL

Re: Adventures in Game Development Chapter 21

Postby bbguimaraes on Tue Jan 14, 2014 6:48 pm

I just watched the whole video in one go. I'll post all my observations and comments in a gigantic block:

  • That lighting engine is insane. Are you using straight opengl lights? The way you explained them reminded me of a long time ago when I played a bit with them. Pretty fun stuff. And the feeling I got every time I made something work was just that: "man, that is fucking sexy".
  • The path-finding bugs wore the funniest parts. Also messed with that a while ago, but never attached it to a real graphical engine, so actually seeing the bizarre things that happen when you get something wrong were really funny. But it seems to be getting pretty sweet.
  • Shadows are nice. That is something you really don't know how complex (or even how the hell it is done) until you try to do it.
  • Garbage collector button. That was the greatest idea ever. Have you considered selling it to oracle?
  • Connor, the soundtrack sounds absolutely amazing. Really impressed musician here. Is the keyboard on the bottom of the rack a Nord Lead? And I feel sorry for Falco to have to implement the song syncing. Good look on that, man.
Overall, pretty awesome stuff. The sad part is you guys are implementing all the things I wanted to do if I had the time... But at least I can see it happening. I usually play around with an idea in an isolated demo, but seeing it all put together is impressive. The 3D ideas you incorporated in the 2D world are all really interesting. Now for the questions:

  • Why is the rotation of the elevated tiles 45°-60° instead of straight up (90° counter-clockwise on the x axis)? Is the camera positioned right above the player on the z axis so they would be a 1-pixel line otherwise?
  • You mentioned the path finding is implemented in lua. Why is that so, as opposed to exposing a path-finding function implemented in c/++?
  • This may seem like a dumb question, but I was wondering: about excluding the loading of the world transformation matrix, why isn't it possible to load it one time and pass through all sprites using the same matrix?
  • Is ES a three-people team now?

Well, that's it for now, I think. Best of luck for all of you and keep these awesome videos coming.
User avatar
bbguimaraes
Chaos Rift Junior
Chaos Rift Junior
 
Posts: 324
Joined: Wed Apr 11, 2012 5:34 pm
Location: Brazil

Re: Adventures in Game Development Chapter 21

Postby Falco Girgis on Tue Jan 14, 2014 8:17 pm

bbguimaraes wrote:Why is the rotation of the elevated tiles 45°-60° instead of straight up (90° counter-clockwise on the x axis)? Is the camera positioned right above the player on the z axis so they would be a 1-pixel line otherwise?
Because our actual camera transform is an orthographic projection looking down the Z axis. If I were to just give the elevated tiles a height in the Z direction, they would be a 1-pixel line, as you said.

bbguimaraes wrote:You mentioned the path finding is implemented in lua. Why is that so, as opposed to exposing a path-finding function implemented in c/++?
Been asked this several times. Here's what I said at DCEmulation.org:
GyroVorbis wrote:[...] As for Lua, I specifically designed our scripting framework with the Dreamcast in mind, and am going to great lengths to keep as much logic in the engine and as little logic in Lua as possible. The entire Lua scripting behavior framework extends from a C++ behavior framework with the exact same triggers and interfaces in the engine, meaning that porting behaviors between C++ and Lua is a fairly trivial and straightforward task.

Lua is being (ab)used a lot more in the early stages of development than it will be later on. It is extremely easy for us to prototype ideas in without spending a large amount of time doing things in C++ that are ultimately going to change. The pathfinding will absolutely wind up being moved over to being statically compiled after it is done being ironed out, and I imagine this is the same approach we will wind up using with several other subsystems during the development of ES.


bbguimaraes wrote:This may seem like a dumb question, but I was wondering: about excluding the loading of the world transformation matrix, why isn't it possible to load it one time and pass through all sprites using the same matrix?
Because the tiles are all located at different world locations. :mrgreen:

bbguimaraes wrote:Is ES a three-people team now?
Nope. You saw an insane amount of work that has been done by our pixel artist, Patrick, who has been working his ass off... Unfortunately his footage had audio issues, and we were unable to work it in at the last minute. Our core team is Me, Tyler, Connor, and Patrick... Allanis (Sara) is also a member of the team, but she may have to drop back to being just a contributor depending on her school commitments.

Edit: OAND
bbguimaraes wrote:That lighting engine is insane. Are you using straight opengl lights?
Not even that much. It's OpenGL ES and GLSL ES, so I'm using a stricter subset to do all of this.
"So what happens if the Elysian Shadows Kickstarter fails?"
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
 
Posts: 10690
Joined: Thu May 20, 2004 3:04 pm
Location: Studio Vorbis, AL

Re: Adventures in Game Development Chapter 21

Postby wtetzner on Tue Jan 14, 2014 10:57 pm

The music system sounds really cool. It reminded me of LucasArts' iMUSE, which they used in Monkey Island 2.

http://en.wikipedia.org/wiki/IMUSE

http://www.1up.com/features/imuse-secret-organic-music

I think the way they handled it was to dynamically add or remove MIDI tracks.
The novice realizes that the difference between code and data is trivial. The expert realizes that all code is data. And the true master realizes that all data is code.
User avatar
wtetzner
Chaos Rift Regular
Chaos Rift Regular
 
Posts: 155
Joined: Wed Feb 18, 2009 8:43 pm
Location: Boston, MA

Re: Adventures in Game Development Chapter 21

Postby gamenovice on Wed Jan 15, 2014 1:42 am

First of all, loved the episode. It really felt like the classic AiGD's, which i've always loved.

So this question is for Falco. Whether it is stupid or not... I will leave it up to this forum to decide.
I've noticed lately that you [Falco] have been doing alot of your coding inside of QtCreator. Does that mean that for ES you are primarily using Qt for coding? Or is it more like you just happen to be showing it off, while still using visual studio on pc (i know xcode has to be used on macs regardless due to the ios platform)?

thanks in advance

p.s. is it actually more complicated than that?
without code, we wouldnt have life as we know it...
User avatar
gamenovice
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
 
Posts: 83
Joined: Fri Nov 12, 2010 9:49 pm
Location: Tampa,FL

Re: Adventures in Game Development Chapter 21

Postby dandymcgee on Wed Jan 15, 2014 11:45 am

gamenovice wrote:First of all, loved the episode. It really felt like the classic AiGD's, which i've always loved.

So this question is for Falco. Whether it is stupid or not... I will leave it up to this forum to decide.
I've noticed lately that you [Falco] have been doing alot of your coding inside of QtCreator. Does that mean that for ES you are primarily using Qt for coding? Or is it more like you just happen to be showing it off, while still using visual studio on pc (i know xcode has to be used on macs regardless due to the ios platform)?

thanks in advance

p.s. is it actually more complicated than that?

Yes, Falco has moved entirely to coding in the QtCreator IDE. Visual Studio is no longer part of the development process.

Very little development, if any, is done on PC. Falco works primarily on Mac, and Sara works on Linux. Tyler also uses a Mac while writing Lua.
That said, the engine and ESTk are being run on PCs all the time, so rest assured everything will be well-tested on every platform before release.
Falco Girgis wrote:It is imperative that I can broadcast my narcissistic commit strings to the Twitter! Tweet Tweet, bitches! :twisted:
User avatar
dandymcgee
ES Beta Backer
ES Beta Backer
 
Posts: 4911
Joined: Tue Apr 29, 2008 4:24 pm
Location: New Hampshire

Re: Adventures in Game Development Chapter 21

Postby Falco Girgis on Wed Jan 15, 2014 12:30 pm

The logistics of maintaining XCode and Visual Studio projects for Windows and OSX versions of the engine became a fucking nightmare... Then once I realized that Visual Studio 2012 STILL doesn't support all of C++11, I decided to abandon that shit. The entire project (libGyro, ESGamma, ESTk) is now a single cross-platform Qt Creator project.


Qt Creator is just an IDE. Just because I'm editing code in it does not mean I'm linking against the Qt framework. ESTk is the only project that does. libGyro and the Engine aren't even using Qt.
"So what happens if the Elysian Shadows Kickstarter fails?"
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
 
Posts: 10690
Joined: Thu May 20, 2004 3:04 pm
Location: Studio Vorbis, AL

Re: Adventures in Game Development Chapter 21

Postby gamenovice on Wed Jan 15, 2014 4:54 pm

Falco Girgis wrote:The logistics of maintaining XCode and Visual Studio projects for Windows and OSX versions of the engine became a fucking nightmare... Then once I realized that Visual Studio 2012 STILL doesn't support all of C++11, I decided to abandon that shit. The entire project (libGyro, ESGamma, ESTk) is now a single cross-platform Qt Creator project.


Qt Creator is just an IDE. Just because I'm editing code in it does not mean I'm linking against the Qt framework. ESTk is the only project that does. libGyro and the Engine aren't even using Qt.



Seriously, QtCreator doesn't have to use the framework? In all my... 2 years working with it i never realized that. Now I have a hell of a reason to start using it more often (I actually got started in Qt thanks to AiGD)!

btw when I say I have a reason now, I mean to do game programming with it. I always thought it was reserved for application gui writing for some reason.
without code, we wouldnt have life as we know it...
User avatar
gamenovice
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
 
Posts: 83
Joined: Fri Nov 12, 2010 9:49 pm
Location: Tampa,FL

Re: Adventures in Game Development Chapter 21

Postby Nokurn on Wed Jan 15, 2014 5:44 pm

Falco Girgis wrote:Then once I realized that Visual Studio 2012 STILL doesn't support all of C++11, I decided to abandon that shit.

Visual C++'s C++11 support is really disappointing when compared to open source compilers like Clang and GCC. VC++ doesn't even support all of C++11 while Clang fully implements C++14. The VC++ 2013 November CTP comes close to full C++11 compliance, but because half those features were added in the CTP, there is no library support for them, which is absolutely shitty. I know it won't happen, but I wish they would adopt an open source compiler like Clang for Visual Studio. In the mean time, I've utterly given up on supporting Visual C++ in all of my projects.

Anyway, this was a really good chapter. I think it might be my favorite. I really enjoyed the return to the classic AiGD format, and all of the tech talk, which is what got me interested in AiGD in the first place, so many episodes ago. The lighting system is awesome. The "popup" style is very unique. I don't think I've seen it in any other game. Tyler's A* implementation is also quite fascinating. I thought it was interesting that you are prototyping in Lua, with the option of incorporating the implementation into the engine. Do you find this workflow faster than just writing it in C or C++ the first time? Are you treating C++ implementation as premature optimization, and opting to only write things that aren't performing in Lua in C++?

It's good to see that you've found a musician who actually gives a shit. It was very insightful to watch his workflow. As someone who has no idea how music is made aside from classical instruments, I found it pleasantly informative and somewhat intimidating. I'd always entertained the idea of trying it and making my own music for my games, but I think I'll leave it to the people who weren't utterly confused by that demonstration!

Looking forward to 22. Maybe try to not kill yourselves in the process ;)
User avatar
Nokurn
Chaos Rift Regular
Chaos Rift Regular
 
Posts: 174
Joined: Mon Jan 31, 2011 2:08 pm
Location: Southern California

Next

Return to Community News

Who is online

Users browsing this forum: Yahoo [Bot] and 1 guest

cron