I Tried Turning Games Into Text
Ғылым және технология
To try everything Brilliant has to offer for free for a full 30 days, visit brilliant.org/Acerola/ you’ll also get 20% off an annual premium subscription! #ad
ASCII art has been a staple of the internet since its inception -- but today I'm wondering if we could make a shader that turns games into ASCII art, and if we can, would it even look good?
Support me on Patreon!
/ acerola_t
Download my ReShade shader pack!
github.com/GarrettGunnell/Ace...
Socials:
Twitter: / acerola_t
Twitch: / acerola_t
Discord: / discord
Unity Code (lacking some features compared to ReShade): github.com/GarrettGunnell/Pos...
ReShade Code: github.com/GarrettGunnell/Ace...
Music:
Afternoon Break - Persona 3 OST
In A Moment's Time - Skullgirls OST
Junes Theme - Persona 4 OST
During The Test - Persona 3 OST
Midori Eyes - Paradise Killer OST
Police Station - Persona OST
With Renewed Hope, We Continue Forward - VA-11 Hall-A OST
Neon District - VA-11 Hall-A OST
Sandgem Town - Pokemon Diamond OST
Like A Dream Come True - Persona 4 OST
Color Your Night - Persona 3 OST
Thanks for watching!
This video is dedicated to my friend, Alotryx.
#acerola #gamedev #unity3d #graphics #shaders
Пікірлер: 870
To try everything Brilliant has to offer for free for a full 30 days, visit brilliant.org/Acerola/ you’ll also get 20% off an annual premium subscription! #ad I got braces on so I'm learning how to speak again, sorry for any poorly enunciated words!
@palmossi
3 күн бұрын
Maybe lol
@Jamato-sUn
3 күн бұрын
Super Hot Mind Control Delete uses ASCII art shader for it's non-puzzle "real life" scenes in some sort of prison
@error.418
3 күн бұрын
Good luck with braces! I just got off "clear correct / invisalign" so I feel you.
@adamebadra3171
3 күн бұрын
Your cat is freaking me out, every time she appears an add pop up out of nowhere besides her😂
@k90v85
3 күн бұрын
dwarf fortress uses acii character
"Is it possible to edge" Is a far more philosophical question than I expected from this video
@Acerola_t
3 күн бұрын
many people have been asking this
@virionspiral
3 күн бұрын
@@Acerola_tI think I'm going to search for edging for further research
@MaxEditsSpore
3 күн бұрын
@@virionspiral please no
@neoline5831
3 күн бұрын
@@virionspiral on microsoft edge
@heeeyno
3 күн бұрын
"I want to go home, and then edge"... *disparage message*
But acerola
@pedropesserl
3 күн бұрын
But acerola,
@tnfAngel
3 күн бұрын
but acerola~
@Mandow_
3 күн бұрын
butt
@creativename.
3 күн бұрын
But acerola 😳😩
@AmazuRazu
3 күн бұрын
but areola.
"Today, we'll be turning characters, into characters" 🔥✍
@deleted_handle
3 күн бұрын
"is it possible to edge?" 🔥✍️
@cringe4581
3 күн бұрын
Monogatari reference?
@operator8014
2 күн бұрын
That was GOOD.
1:57 We are all edging, aren't we
Finally someone that takes into account edge flow, as someone that does some 'by hand' ascii art, always am a bit annoyed when all of those 'ascii art generators' just do the "bright = big character, dark = small character" and leave at that A way of making it even nicer would probably to have an extra pass that applies some character heuristics, like "if above is '\' and bellow is '/', this should be a ')' ", and also take into account that letter characters also have slopes, so if you have a 'top left to bottom right' sloped edge, the 'q' character also fits it, and a 'V' is where '\' and '/' converge going down, and so on
@jc_art_
3 күн бұрын
Yea i was surprised they decided to limit it to just the 10 characters they did
@PhaaxGames
2 күн бұрын
¨`^~,._.,~^´¨ More letters would definitely be better ...
@quontumphysics6589
2 күн бұрын
I know Acerola likes to focus on real-time rendering and applications to games in motion. I wonder how much computation time these extra checks would add.
@minicooper237
Күн бұрын
I was thinking that maybe there was a way to do some additional processing at a higher resolution to better quantize pixel groups that would better match specific characters. Like an 'L' shape would fit better in an ascii pixel where you have two light subpixels on the bottom of the pixel and one light one dark subpixel at the top for example.
16:45 Very ironic how an ASCII shader can't draw text worth crap 🤖 Not throwing shade, just found it funny. I love the effect, it looks great!
@dantekiwi7926
3 күн бұрын
Maybe you can detect when a text is getting rendered in real time, so it can maybe be possible to put "real" text over the ascii text
@s1lkysl1m83
3 күн бұрын
i bet it could render text if the text was large enough. the problem is what he was talking about at @15:00
@lbgstzockt8493
3 күн бұрын
@@dantekiwi7926 Maybe you could just render the UI after converting everything to ASCII
@Punisher4xe
3 күн бұрын
@@dantekiwi7926 oh god
@theneonbop
3 күн бұрын
@@dantekiwi7926 if its not lined up with the grid and doesn't have the same font I can't imagine it looking good
this shader coupled with the fact that the elden ring dlc added an option to put the word "edge" into messages makes for some insane meme potential
@mrskibum885
3 күн бұрын
edge has always been in the game. those 9999 rating messages around the assassin dude in round table hold saying edge, lord
@Kropolis
3 күн бұрын
Edge isn't new edge, lord
A lot of ascii art uses a variety of other symbols for edges, like V, for sharp points, Y for branching lines, and sometimes non-ascii characters (japanese characters seem common) to get more complicated edges. The art at 6:45 has a lot of examples of this. I wonder how you'd be able to automate something like that; you'd need a lot more than just the angle of the edge. It seems like you'd need to do something complicated with the "subpixels" as you downscale the image to find the specific shape of the edges, and map it to the most similar-looking edge character.
there's Asciicker, which is 3d and rendered in ascii characters
@Acerola_t
3 күн бұрын
oh yeah this is a good example, thank you!
@neoline5831
3 күн бұрын
the fact that it's pronounces "ass kicker" is hilarious to me
@pinkorcyanbutlong5651
3 күн бұрын
I'd say that is more of an extended ascii/CGA text mode art as it uses the DOS font that includes more characters, and also uses foreground and and background colours, but yea, pretty cool game
@hi-i-am-atan
Күн бұрын
@@pinkorcyanbutlong5651 a lot of ascii art isn't truly ascii, but shift jis or its successors anyway thanks to the popularity of the medium on japanese image boards. the "ascii" in the name isn't really in reference to the encoding used, but rather the fact that the image is made from digital text. ascii was just the standard when term was coined, so it's kinda just been genericized in this context i mean really it's been genericized in a _lot_ of contexts, stuff like terminal-based roguelikes get called ascii games even when they use the ibm charset, but y'know
@fragmentshader2878
Күн бұрын
Also, my submission for acerolas jam: LAMB
If you abandon the realtime requirement, you could maybe do something like this: Take the DCT of all the white-on-black characters that you want to be available to the shader. Take the DCT of the section of the image. Find the “nearest” by some metric. This way you can dramatically expand the palette of letters, and have a more organic selection
@KillahMate
3 күн бұрын
When I initially clicked on the video I assumed this is how the effect was going to work. But on reflection - and as you say - this would require a huge amount of branching and would run terribly as a GPU shader.
@jfolz
3 күн бұрын
I was thinking maybe you could use locality sensitive hashing to switch between character palettes. You could downscale 8x8 blocks to 2x2 and use 4 hash functions, horizontal and vertical lines, and the two diagonals. Each hash function gives you 1 bit of info: which side of the line is brighter. That gives you 16 palettes you can choose from to determine the best character for the brightness less, which should retain quite a bit more detail. It should be very fast as well, as you're just comparing a few numbers each time without branching.
@oEQjet
3 күн бұрын
I was thinking you could use convolution filters generated by blurring the character set. Taking the DCT of the section is interesting. What are the advantages of doing that over just a convolution filter?
@maboesanman
3 күн бұрын
@@oEQjet tbh my signal processing skills aren’t strong enough to really push me towards one or the other. I thought DCT was what jpeg used so thought might make more sense in this specific case
@oEQjet
3 күн бұрын
@@maboesanman I mean you're not crazy! Jpeg do use it, you could use it here! And i honestly couldn't predict what would be more effective.
stone story rpg is an amazing game which uses ascii art for the visuals
@Acerola_t
3 күн бұрын
yeah i meant specifically an ascii shader over 3D like the Returnal example
@w花b
3 күн бұрын
Dwarf fortress is the most beautiful game using ASCII art. You will understand everything happening on screen very easily.
@IndianaJoenz
2 күн бұрын
The way tht Stone Story RPG allows players to make their own ASCII sprites is quite cool.
@ninjanate2244
2 күн бұрын
Candy Box 2 also uses ascii art
@sambojinbojin-sam6550
Күн бұрын
Cogmind does ASCII art well (it's a futuristic 2d roguelike).
13:15 With fading based on depth, that's my favourite option. Looks amazing.
I wonder how this would look like if instead of just downscaling the image and only matching the character to the luminance, you sampled the original image and looped through more characters to find one that best matches the pixels. This would be quite slow, but there are definitely ways to optimize this lookup. Would be pretty interesting to also see how it works with different fonts.
@sacwingedbatsatadbitsad4346
3 күн бұрын
I've actually implemented this a few months back. Only in C# but I have outlined how it could be done in a shader with probably acceptable performance. It would take a lot of passes and buffers though. I've come to the conclusion that it's not really worth it. It preserves details a little bit better and the output is noticeably sharper - the simple luminance match method has a noticeable blur in comparison - but it's not better by enough to justify it IMO. With a bitmap font, it's still very noisy, the better details are only noticeable if you actively look for them. Maybe if you use antialiased fonts, but that would completely tank the performance. imgur_com/a/f5pQ1Qs (p sure youtube doesn't allow linking off-site so replace the _ with .)
@sacwingedbatsatadbitsad4346
3 күн бұрын
I've actually implemented this a few months back. Only in C# but I have outlined how it could be done in a shader with probably acceptable performance. It would take a lot of passes and buffers though. I've come to the conclusion that it's not really worth it. It preserves details a little bit better and the output is noticeably sharper - the simple luminance match method has a noticeable blur in comparison - but it's not better by enough to justify it IMO. With a bitmap font, it's still very noisy, the better details are only noticeable if you actively look for them. Maybe if you use antialiased fonts, but that would completely tank the performance. a/f5pQ1Qs pretty sure youtube auto-deletes links, it's an imgur album with a comparison
@sxs512
3 күн бұрын
@@sacwingedbatsatadbitsad4346 Hmm what if instead of just comparing the bitmaps you compared the gradient of those? Looking at your imgur gallery it looks like the edges are not really as pronounced as one would expect from this.
@sacwingedbatsatadbitsad4346
3 күн бұрын
@@sxs512 The way it works is it subtracts the pixel in the font, 0 or 1, from the grayscale pixel in the same position, then adds together the absolute value of the pixels in the 8x8 grid. Obviously, if you subtract a value from itself you get 0, so the character with the lowest absolute value is the best match. This is the most canonical approach, it preserves the most information overall. Not all information is equally important to humans, though. For example, you can distinguish more shades of green than red or blue. You'd need to enhance the edges as in the video to get a more desirable but less technically correct look.
IDK why but the shader rendering actual text characters in the boss fight cutscene as just lines and squares was really funny. You literally Are Text, ASCII shader...
"game as ascii" reminded me of the primeagen's recent journey of rendering DOOM as ascii and making his twitch chat play it.
Just watched 18 minutes and 17 seconds of a guy talking about Edging. Absolute Cinema.
The cat is forcing me to watch the sponsor! Noo!
@funx24X7
3 күн бұрын
That cat better be getting a cut
Talks about ASCII art: Creates ASCII art: Beats Elden Ring with ASCII art: Gives the public ASCII art for FREE: Doesn't elaborate further....: BaZED
It was brilliant putting the cat on the sponsor segment so that I bypassed my sponsorskip to see the kitty.
@luyandolove
3 күн бұрын
Same XD
@Voshchronos
2 күн бұрын
that was so clever it's perverse
I actually watched the sponsor because of the cat. Brilliant move
@logixindie
3 күн бұрын
He must has learned this trick on Brilliant.
Depth fading looks very good, it really gives you that sense of 3D that's needed to keep the image coherent during gameplay. Lot of potential here for cool artstyles in a game.
Putting a video of your cat with the sponsor part is honestly so smart, I respect that
lets go love ascii made a ascii shader myself once it was awfull and poorly coded that used a text texture as a compute shader only took like a month im actually still thinking of making a ascii horror game lol
THE TIMING ON THIS IS IMPECCABLE I NEEDED THIS AND IT JUST CAME TO ME ON MY HOMESCREEN
Also, thank you for not doing the increasingly dull LLM / Transformers / AI content. You'll soon be what current gen game devs & technical artists (who are starting now) will call an "OG" resource on graphics programming. On your path, and with a few good collabs, you have the potential to co-author the next evolution of the GPU Gems series. Excited for you to blow up :D
@TeleportRush
3 күн бұрын
transformers?
@mahvus5586
3 күн бұрын
@@TeleportRush The alien car robots
@ZaneBastian
3 күн бұрын
@@TeleportRush the T in GPT is 'Transformer'
I'm rolling my ace soooo hard rn
That was a very hecking cool effect, thanks for the cool video!
Golden content. Technical, without bs, source included. Many thanks
This looks so much better than I could have ever imagined
I remember those dope ASCII GameFaqs guide logos. They were sick.
Love this. Your channel has got to be one of my favorites! I can understand everything you’re talking about even though I’m only a high school freshman. It’s all so simple, and your intro with the flashing phrases and the design is peak! I also love recurring bits such as parish being the harbinger of the sponsored segment. As well as the ever popular “but Acerola?” Speaking of which, I don’t know if I just missed it, but I didn’t really get why returnal using a 10x10 text size was so strange. But you manage to put so much information in such a short amount of time that I very well could have subconsciously breezed past it. Another thing I love about these videos.
holy shit it's beautiful 😭 your video definitely convinced me to build my ascii shader
Amazing stuff. Maybe faces looking jumbled together from a distance would make for a great horror game style with all the uncannyness.
Been following the progress for this on twitter. This looks absolutely amazing and might be my favorite video of yours. Would love to make some small game that gets absolutely carried by these visual effects. Well done! Also, you gotta have one of the highest viewer retention rates during your ad reads (feel free to send this part of the message to potential sponsors)
9:39 bonus points for finding an image with the correct group size A+ great job keep up the good work
extremely cool, I definitely want to try this out!
This is absolutely fantastic! Just... wow! (both the editing/pacing of the video as well as the final effect are top notch! )
Hol' up dude you're like getting buff 🔥 Really interesting vid, always love how much info you're able to pack into these
This is so awesome looking! I haven't gotten into trying to make shaders myself yet, but this is really convincing me to forget about my current projects so I can try remaking this. It seems relatively simple while also looking really cool.
There is a lot of flicker on characters, especially with full square character. Perhaps having some kind of threshold to prevent high frequency changes of the same character like [full square -> @ for 1 frame -> back to full square] would make the image feel more stable if you prevent full square coming up again if there was one recently.
it's insane how well that final result still reads as a detailed image.
Underrated channel. Pacing, explanations, visual guides and comedy/presentation are all done well. Thanks Acerola 👏
WOOOOOOOOOO ACEROLA UPLOAD!!! THIS IS THE BEST THING EVERRRRRR
This looks so good! Thanks for the video
This is really cool ! I was waiting for this video since u posted stuff on twitter. I oddly want to try and use this in my photography, I think the effect looked at its BEST with the super high contrast images, like the initial face with the glow effect.
This is such an interesting and fun video!
I waited so long for this video, FINALLY MY WISH HAS BEEN GRANTED
So much respect for your skill level man! Incredible!
your channel is the definition of underrated. great video!
Dwarf Fortress is an entire game rendered with ascii art.
What a brilliant ploy to get people to watch the ad. Also, this was probably the easiest to follow video that you've made yet. I think I could probably code this one up myself.
Thank you for making this, it looks great!!! ✨
I didn't think it would run so good, love how it looks.
damn, this looks cool as hell man. well done
it is now here, the video i waited for!
damn, amazing job, well done!!!
this is probably my fave shader you ever made:) its so neat
acerola's excuse to dedicate an entire video to edging
Very smart to share the advertisement with cat time. 10/10, didn't skip the ad.
That's so great. I want to see/play an entire game made for this
Every time you release a new video, I get reminded to rewatch your older videos
3:29 I also recommend uploading in 1440p (you can transcode or export, you don't need your timeline to be 1440p) because then KZread does the "Enhanced Bitrate" thing where normal 1080p gets half the bitrate it used to.
yo that was siick! the final application really sold me on how the effect was tuned :D
Honestly sick well done
Best way to do an add segment I have ever seen. I didn’t even play attention to the add, just the cat lol
Hell yeah new acerola upload!!
Love the vid! I recently made a Asccii art generator in JS that created a bitmask of every ascii character of font size using a canvas and grabbing an image of each character, then cutting the image into chunks equal to the size of a character size. I then find the the best matching asscii mask and use that character, it really worked well in giving small intricate details with the non standard a-z and symbols by using other languages and special symbols. This obviously does not run real time and take about 10 seconds to generate on a 800x1200 image at font 10. Struggled to optimize it to be more real while not losing detail. Amazing insight gained from this vid, thank you!
i love when i understand what you're saying it makes me feel so smort
0:48 There is a pretty good came called "Stone Story RPG" that uses ascii art for the entire game, and by the entire game, i mean the ENTIRE GAME, menus, lightning, everything, and it looks beautifully simple
very fun to watch!
I stayed through the ad bc of the cute cato - great job
Your videos never fail to inspire me
Amazing video as always!
FINALLY AN ASCII SHADER THAT DETECTS THE EDGES, thank you Mr 'rola, very nice
fantastic as always
Very nice, i think reducing the character size should help. Also there should be a way to use these shaders over mp4 anime videos and to reproduce this over the command line. I should look more into computer graphics and make it work. Lovely work acerola
@Acerola_t
3 күн бұрын
it's pretty difficult to go below 8x8 lol maybe you could get 7x7 in there but 8x8 is just nice for compute
This is so sick
Thank you so much for noticing this problem with ASCII art video games and fixing it!!
Now add an OCR which will convert any text on screen into ascii characters directly, so that you can read subtitles and menus in game
@drdca8263
3 күн бұрын
In a game made with ASCII art graphics in mind, you wouldn’t need to do that (also I imagine that OCR is a bit slow for that? I could be wrong)
Thanks for the code !
Thank you so much, I've been going to the library every week to use one of these newfangled "graphical" computers but now I can finally watch acerola videos on my apple ][
This looks incredible 😭
There’s a game called Stone Story(mobile and steam) that is (I believe) entirely made of characters(ASKII). It’s very simplistic, but it’s still entertaining.
That effect on 3d is so cool
im actually surprised how youtube compression held up the quality at normal 1080p, I expected it to be a blurry mess after a couple secs.
watching this video with an ascii renderer[vlc] just makes the experience even better.
swolcerola with them glasses, absolute banger video
Imagine putting ui and subtitles over the shader, and redo them in ascii style too Cool video!
The subtitles through the ascii are like a cursed alien language
This is insanely cool
This is one of my favorite visual effects, and I was waiting on the edge of my seat for this video since you announced it. I'm wondering though, do you have any idea how to handle UI? That's the part I got stuck on: figuring out a coherent way to display text when using only text
sick stuff
7:35 man I love hearing you explain edging to me.
reminds me of people making raytracers in the terminal Great work 👍
damn bro you're PUMPING
this is so cool
I'm very much on the beginner/novice end of the computer graphics spectrum, so seeing the effect being applied to the game running in real time BLEW MY MIND. XD
blessed be thou when acerola uploads
Man just as I was thinking about this exact kind of shader for a game I wanted to make, ace uploads a video ON THE EXACT SHADER