• Hey Guest. Check out your NeoGAF Wrapped 2025 results here!

Handmade Hero - Learn how to make a complete, professional-quality game from scratch.

Bah, I missed it tonight. I'm about 50/50 on viewing these live. Any idea if he'll be participating in further streams? I know Casey jumps in Jon's chat a lot.
Someone asked but I don't remember if there was a definite answer.

I didn't even know Jon streamed. Does he just stream his programming language stuff? I assume he reveals nothing about The Witness.
 
Someone asked but I don't remember if there was a definite answer.

I didn't even know Jon streamed. Does he just stream his programming language stuff? I assume he reveals nothing about The Witness.

He does. Sometimes about the programming language he's working on, and sometimes just to play games and complain about all the poor decisions the designers made. It's kind of funny. (twitch.tv/naysayer88)
 
My mind is boggling trying to google for the stuff he's using. He's doing legacy DirectSound so he can support Windows XP.

Now the internet is known for antique geocities and other collections of information, and you would think that SURELY somewhere there's an API reference to the old DirectX, DirectSound, etc. APIs.

Yet, I can't find ANYTHING. No documentation whatsoever. Is this just a google problem, or was MSDN the sole source and when they deleted it vanished forever outside of old books or something? D:


*edit* I had an email exchange with Casey, and the DirectX 7 (and maybe DirectX 8) SDK documentation should have this. However, Microsoft took down the legacy DX7 and DX8 information, and apparently used a robots.txt file to prevent archive.org from saving it for posterity. The result is that it has largely vanished into the sands of time, aside from stuff like the Wine equivalent documentation.
 
*edit* I had an email exchange with Casey, and the DirectX 7 (and maybe DirectX 8) SDK documentation should have this. However, Microsoft took down the legacy DX7 and DX8 information, and apparently used a robots.txt file to prevent archive.org from saving it for posterity. The result is that it has largely vanished into the sands of time, aside from stuff like the Wine equivalent documentation.

Wow, that really sucks. Even if people aren't supporting XP anymore it would still be helpful for people who are trying to fix legacy code.
 
Wow, that really sucks. Even if people aren't supporting XP anymore it would still be helpful for people who are trying to fix legacy code.
Yep. There are probably bits and pieces around, but it was still disturbing to me to run into an example of the internet not really being all-knowing and preserving legacy information forever.

Side note, if I understood correctly today's stream is at 11 PST = 2 EST. The same will be true tomorrow and Friday to allow international people to watch live for a change.
 
Please forgive the double posts, but I wanted to say that not only is tomorrow (and future Fridays) going to be an early stream, at 2 p.m. EST, but today's (11/27/2014) stream was also really long, running towards 2 hour with the questions and answers included.

At this point the color pattern can be moved around the screen with the controller, and a control stick controls the pitch of a sine wave tone.
 
Is LLVM really the only good compiler right now? I figured the GCC and Intel ones were up to snuff at the very least. The real hurt is knowing const is useless...

Yes, I'm a little behind lol.
 
Is LLVM really the only good compiler right now? I figured the GCC and Intel ones were up to snuff at the very least. The real hurt is knowing const is useless...

Yes, I'm a little behind lol.
I must have missed something since I haven't yet watched the most recent episode. Did he say all compilers are bad besides LLVM?

And did he say const is useless? (Why/how?)
 
I must have missed something since I haven't yet watched the most recent episode. Did he say all compilers are bad besides LLVM?

And did he say const is useless? (Why/how?)

I just finished Day 5 so I'm a week behind. He said LLVM is the only compiler he thinks is doing a good job. He kept pointing to Chandler Carruth for compiler talks.

Yeah, he said it's useful in that it helps the compiler find your mistakes before it compiles, but that according to the (C++?) specification const is meaningless and doesn't make your data read only. He demonstrated that you should be able to pass a const value to a function with a pointer and the pointer is allowed to mutate the value.
 
I just finished Day 5 so I'm a week behind. He said LLVM is the only compiler he thinks is doing a good job. He kept pointing to Chandler Carruth for compiler talks.

Yeah, he said it's useful in that it helps the compiler find your mistakes before it compiles, but that according to the (C++?) specification const is meaningless and doesn't make your data read only. He demonstrated that you should be able to pass a const value to a function with a pointer and the pointer is allowed to mutate the value.
Day 005 was the other day I missed so at least I have an excuse.

And that doesn't mean const is useless. Catching errors at compile time is very useful. Yes you can do various bad things to get around it, such as explicitly casting away constness, or using pointers to mask it, but that's on the programmer for choosing to disregard it. It's a tool that you can choose to use to make your programming more robust.

It might be useless for preventing programmers from modifying a specific memory area at runtime, but that's sort of an operating system level lockout activity in my opinion.
 
Yep. There are probably bits and pieces around, but it was still disturbing to me to run into an example of the internet not really being all-knowing and preserving legacy information forever.

I can't believe that stuff is gone forever. I mean, don't older version of visual studio include that documentation? books? mirrors?
 
I can't believe that stuff is gone forever. I mean, don't older version of visual studio include that documentation? books? mirrors?
I don't know if it's legal for anyone to mirror older versions of the SDK, but older versions do have the documentation. And yeah there are probably some older DirectX programming books that would also have it.
 
Even worse is trying to find any API references on MSDN its as if Microsoft want the site to be unsearchable (this coming from a gamedev who spends all day using DirectX/Xaudio/DirectSound and wanting to find something especially for some of our older games which still use DirectSound/DirectX9 and I have to fix some obscure bug or performance issue and can never find any info quickly as I more use DX11/XAudio :[).

If you are after the old DirectSound API reference but on the MSDN their is the old archive section and it contains the DirectSound reference :)

http://msdn.microsoft.com/en-us/library/ee416960(v=vs.85).aspx

Also as a side not for windows vista onwards Microsoft completely changed the audio stack so if you do use DirectSound for games it is not hardware accelerated (if you have audio hardware that is) and is emulated via software :[. However XAudio fixes that and is quite a competent API in its own right :]

As for legacy API references for DirectX7/8 they arent backed up anywhere as far as I can tell and even than theirs not many reasons to wanna go back to them as going back as far as 9 allows you to support back to XP. And for learning its annoying as 10/11 were major overhauls to the API and 12 is looking to be a even bigger (and much needed) change again :]

The 9 documentation is still up aswell.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb219837(v=vs.85).aspx

also first post on gaf finally had my account activated after being a longtime lurker!!!!
 
Even worse is trying to find any API references on MSDN its as if Microsoft want the site to be unsearchable (this coming from a gamedev who spends all day using DirectX/Xaudio/DirectSound and wanting to find something especially for some of our older games which still use DirectSound/DirectX9 and I have to fix some obscure bug or performance issue and can never find any info quickly as I more use DX11/XAudio :[).

If you are after the old DirectSound API reference but on the MSDN their is the old archive section and it contains the DirectSound reference :)

http://msdn.microsoft.com/en-us/library/ee416960(v=vs.85).aspx

Also as a side not for windows vista onwards Microsoft completely changed the audio stack so if you do use DirectSound for games it is not hardware accelerated (if you have audio hardware that is) and is emulated via software :[. However XAudio fixes that and is quite a competent API in its own right :]

As for legacy API references for DirectX7/8 they arent backed up anywhere as far as I can tell and even than theirs not many reasons to wanna go back to them as going back as far as 9 allows you to support back to XP. And for learning its annoying as 10/11 were major overhauls to the API and 12 is looking to be a even bigger (and much needed) change again :]

The 9 documentation is still up aswell.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb219837(v=vs.85).aspx

also first post on gaf finally had my account activated after being a longtime lurker!!!!

Nice! Welcome to Gaf. Thanks for making your first post an informed and helpful one :)
 
This is, hands down, the best Youtube series on programming I've ever watched. And it's free.

The dude neither treats his audience as babies or super-advanced crazy people, he has the Carmack ability to talk for hours without being boring, his code is clean, is not over-commented yet is easy to follow, and you actually learn stuff.

Yes, I know it's technically a Twitch stream, but whatever. :P
 
This is, hands down, the best Youtube series on programming I've ever watched. And it's free.

The dude neither treats his audience as babies or super-advanced crazy people, he has the Carmack ability to talk for hours without being boring, his code is clean, is not over-commented yet is easy to follow, and you actually learn stuff.

Yes, I know it's technically a Twitch stream, but whatever. :P

Completely agree. I've tried to watch many programming tutorials before, but holy shit are they absolute garbage compared to Casey's stuff.
 
This is, hands down, the best Youtube series on programming I've ever watched. And it's free.

The dude neither treats his audience as babies or super-advanced crazy people, he has the Carmack ability to talk for hours without being boring, his code is clean, is not over-commented yet is easy to follow, and you actually learn stuff.

Yes, I know it's technically a Twitch stream, but whatever. :P
I agree. I was initially concerned about it being stuff I'd gone over before, but it's already rapidly gone to areas I'm not as familiar with. I don't know how the guy can manage this every weekday without going insane dealing with the internet, but big respect to him if he can. Even after 1.5+ hours of stream and Q&A, he's replied back and forth to me via email when I asked a question once.

For anyone who hasn't read the blog entries before this series, some of them are interesting as well: http://mollyrocket.com/casey/

In particular, a lot of them relate to the upcoming game The Witness by Jonathan Blow. Part 7 is especially interesting talking about algorithms for placing grass.
 
I agree. I was initially concerned about it being stuff I'd gone over before, but it's already rapidly gone to areas I'm not as familiar with. I don't know how the guy can manage this every weekday without going insane dealing with the internet, but big respect to him if he can.

I'd go bananas just finding stuff on MSDN, I think he has a high insanity resistance.

I'm happy right now because I got as far as implementing the ability to press a button on an XInput device and have the scrolling gradient on screen respond. I immediately wondered if I could make it so that pressing a button would make each pixel more or less red.

In the process, by myself, I figured out something new I didn't know. I've now made it so that X makes it more red and Y makes it less red. This took two minutes.

Basically I feel like I've actually seriously learned something that allows me to be innovative, rather than just parroting his code into a file.
 
This is, hands down, the best Youtube series on programming I've ever watched. And it's free.

...his code is clean, is not over-commented yet is easy to follow...
Yeah, this is the best resource I've gone through in my college experience. I've actually changed some of my code formatting after looking at how he does it. The never ending pursuit for easily searchable, readable, and compact code continues lol.

Even after 1.5+ hours of stream and Q&A, he's replied back and forth to me via email when I asked a question once.

For anyone who hasn't read the blog entries before this series, some of them are interesting as well: http://mollyrocket.com/casey/

I was impressed with how quick he got back to me when I emailed him. I did notice he took the "Email me" button off the website though lol.

Yeah, mollyrocket has some great stuff. I haven't read them all, but I read the one about Semantic Compression right after I read John Carmack's post about functional programming in C++ and both of them really changed how I arrange my data.
 
Is the time of the last stream the permament one? Because fuck, it was almost 5AM for me and I really enjoyed the Twitch chat during the streams around thanksgiving. It's rather sad that I'd have to miss it..
 
Is the time of the last stream the permament one? Because fuck, it was almost 5AM for me and I really enjoyed the Twitch chat during the streams around thanksgiving. It's rather sad that I'd have to miss it..
Using EST because that's what I know, Monday through Thursday streams are 11 EST, and Friday streams are 2 EST.
 
Casey is...not a fan of object oriented programming. It would take somebody smarter than me to list all the reasons why, though.
 
Why C tho? Isn't an object oriented language better?
The game is technically using C++. The files are named .cpp, and the DirectSound interface specifically used at least one method call that I noticed.

That said, Casey is rather unique in terms of not being a fan of object-oriented programming, or at least not doing it in C++.

I -think- in general however he tries to point out that the ways he does things, or the methodologies he supports, are done for certain reasons...but you are free to use a different methodology. I suppose the important part is doing some thinking about what's involved, whether there are tradeoffs, and considering the alternatives. If after that, you conclude a different way is still best, then go for it!

*edit* For more detail, I don't feel like I fully follow this myself, but: http://mollyrocket.com/casey/stream_0019.html
If you’re not used to programming like this, you may think I’m exaggerating, but you’ll just have to trust me, it’s true. I spend exactly zero time thinking about “objects” or what goes where. The fallacy of “object-oriented programming” is exactly that: that code is at all “object-oriented”. It isn’t. Code is procedurally oriented, and the “objects” are simply constructs that arise that allow procedures to be reused. So if you just let that happen instead of trying to force everything to work backwards, programming becomes immensely more pleasant.

Basically it sounds as though he is not a fan of the traditional object-oriented design, break everything down into conceptual objects and index cards system. But, using objects might be fine.
 
I honestly haven't watched any of the videos yet, but is there a Q&A transcript?

Someone mentioned that the episodes can get long with the Q&A (2~ hours), so I kinda want to weed out the parts but at the same time I want to see if there's good info on them.
 
I honestly haven't watched any of the videos yet, but is there a Q&A transcript?

Someone mentioned that the episodes can get long with the Q&A (2~ hours), so I kinda want to weed out the parts but at the same time I want to see if there's good info on them.

The Q&A is the last thirty minutes of every stream. If you don't feel lost by the end of the hour video before Q&A then you'll be fine.
 
I think tonight was the first time I saw Casey start to crack about a question. There were so many questions he had to dig through to find actual programming questions, and someone asked something about physics that was apparently completely off-base and apparently obvious (or maybe completely unrelated). He was like you HAD to have known when you asked that.

Hopefully it doesn't get too bad. :P
 
I think tonight was the first time I saw Casey start to crack about a question. There were so many questions he had to dig through to find actual programming questions, and someone asked something about physics that was apparently completely off-base and apparently obvious (or maybe completely unrelated). He was like you HAD to have known when you asked that.

Hopefully it doesn't get too bad. :P

He still doesn't have moderators in the Twitch chat, does he? Maybe it's time to let some people filter the questions.
 
He still doesn't have moderators in the Twitch chat, does he? Maybe it's time to let some people filter the questions.
There are several moderators in chat now I think -- the people with swords next to their names. I'm guessing they can kick/mute but can't filter questions.

I have an idea for a way to filter the questions, but it will take someone with web know-how to do it.
 
There are several moderators in chat now I think -- the people with swords next to their names. I'm guessing they can kick/mute but can't filter questions.

I have an idea for a way to filter the questions, but it will take someone with web know-how to do it.

I don't know enough about mods, but I've seen bots remove links and spam, so I'd assume the capabilities are there on some level.
 
This is a tad off-topic, but I noticed Jonathan Blow has some videos up on Compiler Programming on Twitch. Has anybody here watched them?
 
This is a tad off-topic, but I noticed Jonathan Blow has some videos up on Compiler Programming on Twitch. Has anybody here watched them?

Yeah, they're really interesting. He's designing a new programming language for games since C++ is so bloated and C by itself doesn't quite cut it for big projects. Not to mention both of them are very archaic at this point.
 
There are several moderators in chat now I think -- the people with swords next to their names. I'm guessing they can kick/mute but can't filter questions.

I have an idea for a way to filter the questions, but it will take someone with web know-how to do it.

I suppose the mods could literally just copy/paste the questions in a Google doc lol. And then Casey could see them, but that's a terrible solution.
 
Yeah, they're really interesting. He's designing a new programming language for games since C++ is so bloated and C by itself doesn't quite cut it for big projects. Not to mention both of them are very archaic at this point.

Wow, that sounds like a project. I'll have to check out what he's doing.
 
I hope it's okay to occasionally bump this thread with news, if anyone is still interested. In the last few streams, a couple of neat features got added:

  • Game code was changed to be a set of services in a DLL, called by the platform layer. This means that the game code now automatically detects the DLL being updated from a recompile, and unloads/reloads the DLL as a result. The effect is that Casey can do a very fast compile of the C/C++ game code while the game is running, and instantly see the result happen without even pausing the game.
  • To make this even more useful, today's stream covered taking a snapshot of game state, recording player input over a certain period of time, and playing the snapshot and input back. The effect is that, for example, a game state will reload, the player character will run to the right and do a jump, and then the entire sequence will loop. The developer can then continuously adjust the jump algorithm while the jump sequence plays, without needing to even take their hands off the keyboard to grab a controller.
  • The game can now make itself always on-top and transparent when you alt-tab so you can see your development environment through it.

Apparently these approaches have some limitations though, such as function pointers (and C++ vtables) preventing things from working if they were part of the memory snapshot. Apparently this project doesn't plan to use those.
 
I'm fine with bumping this thread. Although I follow those forums, it's nice to hear from this community as well.
In the last few streams, a couple of neat features got added:

  • Game code was changed to be a set of services in a DLL, called by the platform layer. This means that the game code now automatically detects the DLL being updated from a recompile, and unloads/reloads the DLL as a result. The effect is that Casey can do a very fast compile of the C/C++ game code while the game is running, and instantly see the result happen without even pausing the game.
  • To make this even more useful, today's stream covered taking a snapshot of game state, recording player input over a certain period of time, and playing the snapshot and input back. The effect is that, for example, a game state will reload, the player character will run to the right and do a jump, and then the entire sequence will loop. The developer can then continuously adjust the jump algorithm while the jump sequence plays, without needing to even take their hands off the keyboard to grab a controller.
  • The game can now make itself always on-top and transparent when you alt-tab so you can see your development environment through it.

Apparently these approaches have some limitations though, such as function pointers (and C++ vtables) preventing things from working if they were part of the memory snapshot. Apparently this project doesn't plan to use those.

These all sound like interesting topics! I'm somehow still a week behind, but all of this stuff I have either not heard of or implemented.
 
"And you'll see when you get to this page, they wanna give you a lot of other stuff that you really don't want. When you look on here, you can see stuff like Team Foundation Server. And since you're just someone who's trying to program C at home, you probably don't have a team, or if you do, they probably don't have a foundation or don't want their foundation to be comprised primarily of something from Microsoft. I know I certainly wouldn't. Ahem."

lol Followed, and thanks! <3
 
I learned about a cool open-source image editor used on the stream: Krita (https://krita.org/). The tool is GPL-licensed but you own the art you create so you can do whatever you want with the images you make.

One thing I liked in contrast to some open-source projects was that someone asked (a while back) why they couldn't pick a specific color using a hex tool. The responses, which unfortunately may sometimes be typical of open-source projects, said that they didn't think people doing digital painting needed to be able to choose specific colors, that's more a web developer thing, etc. BUT, someone apparently added the feature anyway, instead of just saying "well you shouldn't do that"!
 
I learned about a cool open-source image editor used on the stream: Krita (https://krita.org/). The tool is GPL-licensed but you own the art you create so you can do whatever you want with the images you make.

One thing I liked in contrast to some open-source projects was that someone asked (a while back) why they couldn't pick a specific color using a hex tool. The responses, which unfortunately may sometimes be typical of open-source projects, said that they didn't think people doing digital painting needed to be able to choose specific colors, that's more a web developer thing, etc. BUT, someone apparently added the feature anyway, instead of just saying "well you shouldn't do that"!

Wait, so is this basically a competitor to GIMP or am I reading their webpage wrong?
 
Wait, so is this basically a competitor to GIMP or am I reading their webpage wrong?
It seems to be aimed at a bit of a different target. It looks like it is focused at digital painting and being closer to Photoshop, while GIMP is focused more on image/photograph editing.

You can probably do either with either tool, but Krita does seem to have some nice painting options, and some people may like the user interface better than GIMP.
 
Subscribed! as well.

Can anyone who had little programming experience before comment on how they've found the series?
 
Top Bottom