Excellent video, thank you sir. I'm sure every viewer can appreciate just how many hours it has have taken, not just to create this video, but to identify, discover and learn everything up to the point where you can make a video like this one. Very inspirational indeed!
Niceeeee!! How's it going, hope you're doing well. I'm still in Kitchener at the moment. If you're also still up here, send me if you'd like to catch up some time :)
Here's a small tip for you, if you use colors in your prompt string for the terminal, you can use the reset code at the start or end or both so it won't matter what colors get adjusted and it'll go back to normal for when you type commands in. I've got mine setup so that normal user names are green, root obviously in red, I have a yellow indicator symbol after that, generally just an @ for normal stuff, and a path in blue. Since the prompt gets kind of long at times, I've made it a two-line prompt, with the usual user based prompt characters.
This was AWESOME! So much information packed into an extremely well done format. So many implications too.. security comes to mind in so many ways. I wrote 4 small python apps this past week, for a newly onboarded subcontractor and time was a factor. The first line of each app’s README file requested that the user maximize the terminal screen as soon as the app script was executed 😝 NOBODY HERE BETTER PIRATE THIS MANS VIDEO GAME! ALL BUCANEERS WILL HAVE THEIR ESCAPE CODES ALIASED AND INPUTS FORMATTED SO THAT THERE IS NO ESCAPE FROM TERMINAL LAND! 😂 Btw, Robert, your background wall hanging decor is superb. I’d love to have a beer or 3 with you some day 🤌 cheers brother🤙
I wish this video existed five years ago! There was a time when I really wanted to make a terminal ascii game, but the character width and keyboard autorepeat issues drove me crazy and I gave up! My Google-fu at the time wasn't up to the task to find the solutions that you've so excellently put together into this video. I might just have to try taking another crack at it now...
The biggest issue is that a lot of the concepts in this video are not even googleable if you don't already know the answers, which is why I decided someone needs to make this video :)
I guess there's a reason why something like Dwarf Fortress ships an executable which delivers its own graphical terminal instead of leaving it up to the vast array of unknowns that can happen on the user side. Still - I see how rich a modern terminal app can be, having hundreds of colors and little glyphs (just see ytop and how they do line graphs in the terminal) and how none of this was around twenty years ago and I can see the appeal of a real time terminal only game
The characther thing happened to me too! Been working on doing a battleship game in C++ and it took me more time to measure correctly which chars to use than to code the actual game LMAO
The man's "favorite video game" from the start is his own. It seems nothing more than a toy project at this point. Yet there is a kickstarter video that sounds like someone trying to assure me to buy a brick
Nice video, many useful info. In these days I am trying to make a terminal game for the #7drl using the lib pyTermTk ("7drl-ASnakeOnAPLane") using only double sized chars to have a proportional tilesets.
I'm currently working on a terminal game after wondering why people don't make them anymore. I realized that there is very little standardization and almost nothing is guaranteed to work on every terminal. I still have no idea what is safe to use and I'm sure it will break with someone's set-up. Support for various features can vary wildly and standardization only exists for some of the more simple things. I can really see why people just render their own text in a window for text based games now.
Please please please, people please, USE TERMINFO like ncurses does. I don't know how many Linux programs I have seen, mostly written in Go and Rust, assume that EVERYONE!!!! has the exact same terminal control codes. And that's just not even true even of Linux users using terminal _emulators_ on Linux to access Linux. When you use tput and stty, they're accessing your terminal's capabilities and command strings and sending the correct ones for your terminal. When you send raw escape commands to stdout, you aren't.
I don’t want to detract from the video, but I wanted to let you know (if nobody else has) that you’ve got a hiss in your audio, as if you were listening to an analogue tape on an old tape deck! I’m loving the rest so far though!
Thanks for the note. Do you mean that the 'analogue tape hiss' that you're talking about goes away after 0:00:35? For the intro, I had the microphone a bit further away than for the rest of the video, so I had to increase the gain for that part to normalize it with the later part of the video. This will of course increase the noise level of the background as well. The hiss also might be the background noise of my computer fans, and other ambient noise in my apartment. Good audio recording is surprisingly difficult. I even have to shut off my fridge every time I record a video so that it doesn't wake up and add tons of background noise to the video. A few times, I've even forgotten to turn it back on, lol
Ncurses is indeed the last section in the video. There is some overlap with concepts discussed in the other sections, but many of the concepts like language/encoding settings, ANSI escape sequences, or character width ambiguities exist independently of ncurses.
Why aren't the character widths consistent? The way you described the problem, it looks like it is going to be flat out insurmountable for most people. Is making applications for the terminal like this simply a bad idea fundamentally?
"Is making applications for the terminal like this simply a bad idea fundamentally?", some people would probably argue that the answer is "Yes, you shouldn't make multi-language applications for the terminal.", but that's a matter of opinion. Languages like Japanese have characters that are simply wider than most traditional Latin ASCII characters. I suppose it would be possible to squeeze them into one single column in a mono-spaced font, but I'm sure that there are language experts who think that this is not an acceptable design decision. I have no opinion on the subject, but if you DO want to make terminal applications and count widths accurately, this video is the only discussion of the topic that I am aware of.
@@RobertElderSoftware Consistent doesn't mean that character widths have to be the same for all characters: they merely have to behave the same across platforms. You need technical guarantees that the terminal will always work the way it works in your test case. Otherwise, you'll have no idea whether what you're doing will work on anybody else's computer or not and you'd be better off using a Javascript library which fakes an ncurses-lookalike interface in a browser window since that would run more consistently across all systems.
Awesome! Thanks for not illegally pirating my video game. Obeying the law is one of my favourite things to do, and I'm glad that you share this preference.
lol, I am becoming increasingly aware of the nuances of how I pronounce things from various comments on my videos. The specific pattern that you describe is one that I would have never been conscious of had you not mentioned it. In fact, I have trouble even imagining the difference without listening to the video. I am basically 'sound blind' to these differences and don't even think about them unless someone points it out. It's the same with how I say 'Ubuntu'. I usually just say "Ooo bunt Ooo" which I consider to just be a lazy English phonetisization of the native pronunciation "Ooo Boo n Too". I would barely pick up on the difference in conversation, but it seems to really bug some people :P
@@RobertElderSoftware It doesn't bug me at all, I'd listen to you all day. In fact I do... And if anything I would have guessed this is very deliberate and actually a secret binary encoding for super fans, and the resulting message is a link to some special content.
@@der.Schtefanhah, that would be interesting, but too much work. I had thought about doing a video on the topic of subliminal messaging in YT videos, because modern day censorship kind of forces us to speak in a coded language. On the extreme end of things, it means that there is certain content on the internet that can only be understood by a select few members of the in-group. The social implications of this are interesting to think about, but I've got too much else going on at the moment.
"Building Video Game for the Linux Terminal" is my favorite game dev tutorial
Excellent video, thank you sir. I'm sure every viewer can appreciate just how many hours it has have taken, not just to create this video, but to identify, discover and learn everything up to the point where you can make a video like this one. Very inspirational indeed!
Also look into notcurses, it allows you to display a lot more than just blocks
Super satisfying to watch with all the back-to-back examples exploring terminal behaviours. Great video! Take care, Robert!
- Denis
Are you the Denis that was in my software engineering class by any chance?
Indeed! That Denis!
Niceeeee!! How's it going, hope you're doing well. I'm still in Kitchener at the moment. If you're also still up here, send me if you'd like to catch up some time :)
Things are going well! I'm back in New Brunswick. I'll hit you up if ever I'm in the region!
Oh man, how the hell I end up here having linux addiction. I used to be normal just 15 years ago.
One of us... One of us... One of us.
I am happily infected with linux virus 🙂
Linux is indeed addiction
i used to look at Linux with disgust and try to avoid it like a plague. Now look at me, dunking myself in it 🤢🤮
@@nobeltnium you mush have a great pc back then
Here's a small tip for you, if you use colors in your prompt string for the terminal, you can use the reset code at the start or end or both so it won't matter what colors get adjusted and it'll go back to normal for when you type commands in. I've got mine setup so that normal user names are green, root obviously in red, I have a yellow indicator symbol after that, generally just an @ for normal stuff, and a path in blue. Since the prompt gets kind of long at times, I've made it a two-line prompt, with the usual user based prompt characters.
What a ride, I remeber the nights and days finding about those details of unix ttys.
Hell yea my favourite linux command line game whens the powershell port coming
This was AWESOME! So much information packed into an extremely well done format. So many implications too.. security comes to mind in so many ways.
I wrote 4 small python apps this past week, for a newly onboarded subcontractor and time was a factor. The first line of each app’s README file requested that the user maximize the terminal screen as soon as the app script was executed 😝
NOBODY HERE BETTER PIRATE THIS MANS VIDEO GAME! ALL BUCANEERS WILL HAVE THEIR ESCAPE CODES ALIASED AND INPUTS FORMATTED SO THAT THERE IS NO ESCAPE FROM TERMINAL LAND! 😂
Btw, Robert, your background wall hanging decor is superb. I’d love to have a beer or 3 with you some day 🤌 cheers brother🤙
This is my second favorite channel.
Which one is your first?
We are waiting.
Diabolical statement to let us hanging on
I wish this video existed five years ago! There was a time when I really wanted to make a terminal ascii game, but the character width and keyboard autorepeat issues drove me crazy and I gave up! My Google-fu at the time wasn't up to the task to find the solutions that you've so excellently put together into this video.
I might just have to try taking another crack at it now...
The biggest issue is that a lot of the concepts in this video are not even googleable if you don't already know the answers, which is why I decided someone needs to make this video :)
I guess there's a reason why something like Dwarf Fortress ships an executable which delivers its own graphical terminal instead of leaving it up to the vast array of unknowns that can happen on the user side.
Still - I see how rich a modern terminal app can be, having hundreds of colors and little glyphs (just see ytop and how they do line graphs in the terminal) and how none of this was around twenty years ago and I can see the appeal of a real time terminal only game
This is my favourite 18 minutes long video
This is my favourite comment.
Found your video through youtube recommendations, excellent content!
Love these long form vids!
The characther thing happened to me too! Been working on doing a battleship game in C++ and it took me more time to measure correctly which chars to use than to code the actual game LMAO
Great one Robert. Hope to see such work again soon!
i learn so much by watching your videos great job!!!
Thank you
The man's "favorite video game" from the start is his own. It seems nothing more than a toy project at this point. Yet there is a kickstarter video that sounds like someone trying to assure me to buy a brick
This is my favorite video of yours.
I see you've uncovered the ingenious marketing technique of "please do not illegally pirate my video game."
This helped me a lot. I'm thinking about doing quite a bit with nushell.
this is really good!
Fantastic video. Instant subscriber.
wonderfully educational as always :)
This is my favourite
amazing content ...
Nice video 😊
It seems like it's easier to write your own terminal emulator and make your game for it, than inteface with all that weird inconsistent stuff.
this is my favorite linux command(s video)
but seriously now, it is really very good video! I like straight to the point approach
- Mom can I have a fun video about a terminal game
- To have fun?
- YES
**actually learns about terminal state, input and encoding like a boss**
Linux is an infinite rabbit hole it seems.
Nice video, many useful info.
In these days I am trying to make a terminal game for the #7drl using the lib pyTermTk ("7drl-ASnakeOnAPLane")
using only double sized chars to have a proportional tilesets.
robert didn't say "favourite" in this video, did he? is this... a long awaited new era?
These allegations are categorically false and I deny them entirely.
@@RobertElderSoftware i don't believe you
I'm currently working on a terminal game after wondering why people don't make them anymore. I realized that there is very little standardization and almost nothing is guaranteed to work on every terminal. I still have no idea what is safe to use and I'm sure it will break with someone's set-up. Support for various features can vary wildly and standardization only exists for some of the more simple things. I can really see why people just render their own text in a window for text based games now.
Please please please, people please, USE TERMINFO like ncurses does. I don't know how many Linux programs I have seen, mostly written in Go and Rust, assume that EVERYONE!!!! has the exact same terminal control codes. And that's just not even true even of Linux users using terminal _emulators_ on Linux to access Linux.
When you use tput and stty, they're accessing your terminal's capabilities and command strings and sending the correct ones for your terminal. When you send raw escape commands to stdout, you aren't.
This is my favourite game
This is my favourite comment.
re: end of video
This is my favorite pirated video game
This is my favorite comment.
I don’t want to detract from the video, but I wanted to let you know (if nobody else has) that you’ve got a hiss in your audio, as if you were listening to an analogue tape on an old tape deck!
I’m loving the rest so far though!
Oh! It needed at about 0:00:35!
Thanks for the note. Do you mean that the 'analogue tape hiss' that you're talking about goes away after 0:00:35? For the intro, I had the microphone a bit further away than for the rest of the video, so I had to increase the gain for that part to normalize it with the later part of the video. This will of course increase the noise level of the background as well. The hiss also might be the background noise of my computer fans, and other ambient noise in my apartment. Good audio recording is surprisingly difficult. I even have to shut off my fridge every time I record a video so that it doesn't wake up and add tons of background noise to the video. A few times, I've even forgotten to turn it back on, lol
Who tf dislikes this video?? Really interesting
But how to put a monochrome picture into a character set to display the picture inside a block of some character?
Is...This not just reinventing Ncurses?
It's still remarkably cool that you did it from scratch, though, and is very informative.
Ncurses is indeed the last section in the video. There is some overlap with concepts discussed in the other sections, but many of the concepts like language/encoding settings, ANSI escape sequences, or character width ambiguities exist independently of ncurses.
very gud 👍
Hey, love your videos. Can you make a video on `col` command?
OMG what a find. Subbed
but can it play doom?
what font is that?
Why aren't the character widths consistent?
The way you described the problem, it looks like it is going to be flat out insurmountable for most people.
Is making applications for the terminal like this simply a bad idea fundamentally?
"Is making applications for the terminal like this simply a bad idea fundamentally?", some people would probably argue that the answer is "Yes, you shouldn't make multi-language applications for the terminal.", but that's a matter of opinion. Languages like Japanese have characters that are simply wider than most traditional Latin ASCII characters. I suppose it would be possible to squeeze them into one single column in a mono-spaced font, but I'm sure that there are language experts who think that this is not an acceptable design decision. I have no opinion on the subject, but if you DO want to make terminal applications and count widths accurately, this video is the only discussion of the topic that I am aware of.
@@RobertElderSoftware Consistent doesn't mean that character widths have to be the same for all characters: they merely have to behave the same across platforms. You need technical guarantees that the terminal will always work the way it works in your test case. Otherwise, you'll have no idea whether what you're doing will work on anybody else's computer or not and you'd be better off using a Javascript library which fakes an ncurses-lookalike interface in a browser window since that would run more consistently across all systems.
Loved the video, sub worth channel! I always wondered this stuff... :)
Also, I didn't just illegally pirate the video game :)
Awesome! Thanks for not illegally pirating my video game. Obeying the law is one of my favourite things to do, and I'm glad that you share this preference.
Excel spreadsheet gaming
Are you aware of the fact that you're changing the way you pronounce the word "again" between adjunct sentences?
lol, I am becoming increasingly aware of the nuances of how I pronounce things from various comments on my videos. The specific pattern that you describe is one that I would have never been conscious of had you not mentioned it. In fact, I have trouble even imagining the difference without listening to the video. I am basically 'sound blind' to these differences and don't even think about them unless someone points it out. It's the same with how I say 'Ubuntu'. I usually just say "Ooo bunt Ooo" which I consider to just be a lazy English phonetisization of the native pronunciation "Ooo Boo n Too". I would barely pick up on the difference in conversation, but it seems to really bug some people :P
This is a common trait among Canadians.
I wonder how Robert pronounces 'milk'?
@@RobertElderSoftware It doesn't bug me at all, I'd listen to you all day. In fact I do... And if anything I would have guessed this is very deliberate and actually a secret binary encoding for super fans, and the resulting message is a link to some special content.
@@der.Schtefanhah, that would be interesting, but too much work. I had thought about doing a video on the topic of subliminal messaging in YT videos, because modern day censorship kind of forces us to speak in a coded language. On the extreme end of things, it means that there is certain content on the internet that can only be understood by a select few members of the in-group. The social implications of this are interesting to think about, but I've got too much else going on at the moment.
Comment anything accept "This is my favourite comment" 🙂
Ok, I 'accept' that I must comment that this is my favourite comment.
As I am a 1337 h4x0r, I instantly unsubbed, pirated your game, then resubbed. I just love living on the edge like that.