I Tried Turning Games Into Text
Вставка
- Опубліковано 30 чер 2024
- 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!
www.patreon.com/acerola_t
Download my ReShade shader pack!
github.com/GarrettGunnell/AcerolaFX/releases
Socials:
Twitter: Acerola_t
Twitch: www.twitch.tv/acerola_t
Discord: discord.gg/FxGQvbfm6Y
Unity Code (lacking some features compared to ReShade): github.com/GarrettGunnell/Post-Processing/tree/main/Assets/ASCII
ReShade Code: github.com/GarrettGunnell/AcerolaFX/blob/main/Shaders/AcerolaFX_ASCII.fx
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 - Наука та технологія
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!
Maybe lol
Super Hot Mind Control Delete uses ASCII art shader for it's non-puzzle "real life" scenes in some sort of prison
Good luck with braces! I just got off "clear correct / invisalign" so I feel you.
Your cat is freaking me out, every time she appears an add pop up out of nowhere besides her😂
dwarf fortress uses acii character
"Is it possible to edge" Is a far more philosophical question than I expected from this video
many people have been asking this
@@Acerola_tI think I'm going to search for edging for further research
@@virionspiral please no
@@virionspiral on microsoft edge
"I want to go home, and then edge"... *disparage message*
"Today, we'll be turning characters, into characters" 🔥✍
"is it possible to edge?" 🔥✍️
Monogatari reference?
That was GOOD.
But acerola
But acerola,
but acerola~
butt
But acerola 😳😩
but areola.
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
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.
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.
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?
@@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
@@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.
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
Yea i was surprised they decided to limit it to just the 10 characters they did
¨`^~,._.,~^´¨ More letters would definitely be better ...
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.
1:57 We are all edging, aren't we
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
edge has always been in the game.
those 9999 rating messages around the assassin dude in round table hold saying edge, lord
Edge isn't new
edge,
lord
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!
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
i bet it could render text if the text was large enough. the problem is what he was talking about at @15:00
@@dantekiwi7926 Maybe you could just render the UI after converting everything to ASCII
@@dantekiwi7926 oh god
@@dantekiwi7926 if its not lined up with the grid and doesn't have the same font I can't imagine it looking good
there's Asciicker, which is 3d and rendered in ascii characters
oh yeah this is a good example, thank you!
the fact that it's pronounces "ass kicker" is hilarious to me
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
"game as ascii" reminded me of the primeagen's recent journey of rendering DOOM as ascii and making his twitch chat play it.
stone story rpg is an amazing game which uses ascii art for the visuals
yeah i meant specifically an ascii shader over 3D like the Returnal example
Dwarf fortress is the most beautiful game using ASCII art. You will understand everything happening on screen very easily.
The way tht Stone Story RPG allows players to make their own ASCII sprites is quite cool.
Candy Box 2 also uses ascii art
13:15 With fading based on depth, that's my favourite option. Looks amazing.
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.
The cat is forcing me to watch the sponsor! Noo!
That cat better be getting a cut
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.
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 .)
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
@@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.
@@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...
It was brilliant putting the cat on the sponsor segment so that I bypassed my sponsorskip to see the kitty.
Same XD
that was so clever it's perverse
Just watched 18 minutes and 17 seconds of a guy talking about Edging. Absolute Cinema.
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
I actually watched the sponsor because of the cat. Brilliant move
He must has learned this trick on Brilliant.
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
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.
Amazing stuff. Maybe faces looking jumbled together from a distance would make for a great horror game style with all the uncannyness.
THE TIMING ON THIS IS IMPECCABLE I NEEDED THIS AND IT JUST CAME TO ME ON MY HOMESCREEN
This looks so much better than I could have ever imagined
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.
I'm rolling my ace soooo hard rn
Putting a video of your cat with the sponsor part is honestly so smart, I respect that
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
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
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)
it's insane how well that final result still reads as a detailed image.
acerola's excuse to dedicate an entire video to edging
"I don't understand half the explanations being provided, but boy howdy do I love watching anyway" is one of my favorite genres
Why yes, I am also subscribed to 8 Bit Music Theory, why do you ask
I remember those dope ASCII GameFaqs guide logos. They were sick.
holy shit it's beautiful 😭
your video definitely convinced me to build my ascii shader
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.
9:39 bonus points for finding an image with the correct group size
A+ great job keep up the good work
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)
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
transformers?
@@TeleportRush The alien car robots
@@TeleportRush the T in GPT is 'Transformer'
Dwarf Fortress is an entire game rendered with ascii art.
That was a very hecking cool effect, thanks for the cool video!
"the first time you heard of ASCII art was gameFAQs"
Hold my Skidrow...
Additional effect: shift your grid by 1 pixel per frame and you can get that real Matrix "falling characters" vibe.
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.
Reminds me of the old YT april fools prank where they added a video renderer that output videos as moving ascii art
Best way to do an add segment I have ever seen. I didn’t even play attention to the add, just the cat lol
Golden content. Technical, without bs, source included. Many thanks
This is absolutely fantastic! Just... wow! (both the editing/pacing of the video as well as the final effect are top notch! )
This looks so good! Thanks for the video
The subtitles through the ascii are like a cursed alien language
stone story RPG's main style centers around ascii art, and it's really impressive
"I didn't really feel like doing any research on this topic because..I already know how to solve the problem, so..I don't need to do any research" lol!!
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!
WOOOOOOOOOO ACEROLA UPLOAD!!! THIS IS THE BEST THING EVERRRRRR
Massive Respect for using Persona 3 Soundtrack
extremely cool, I definitely want to try this out!
I use a software called ReShade to apply shaders to games like Sekiro in real time, and it has an option for turning each frame into ASCII art. You can see how it looks; I have a video fighting the final boss but with this shader and the ASCII option.
this is probably my fave shader you ever made:) its so neat
damn, this looks cool as hell man. well done
I waited so long for this video, FINALLY MY WISH HAS BEEN GRANTED
Honestly sick well done
Hell yeah new acerola upload!!
I hesitated clicking on the video because of the Elden Ring thumbnail and then was about to get off just as seeing the game's title screen, not wanting to get anything spoiled from the DLC. So that spoiler disclaimer was really reassuring to see. In a video about text, some text irrelevant to it saved some watch time.
Hol' up dude you're like getting buff 🔥
Really interesting vid, always love how much info you're able to pack into these
it is now here, the video i waited for!
So much respect for your skill level man! Incredible!
Amazing video as always!
I didn't think it would run so good, love how it looks.
This is such an interesting and fun video!
your channel is the definition of underrated. great video!
yo that was siick! the final application really sold me on how the effect was tuned :D
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.
damn, amazing job, well done!!!
Imagine putting ui and subtitles over the shader, and redo them in ascii style too
Cool video!
Another option when selecting a char for a region, you can blur the character, take the use a least-squares method between the target and the character, and use the char with the lowest variance
FINALLY AN ASCII SHADER THAT DETECTS THE EDGES, thank you Mr 'rola, very nice
Thanks for the code !
this would go hard as a low poly retro style game designed around the shader
Your videos never fail to inspire me
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.
Very smart to share the advertisement with cat time. 10/10, didn't skip the ad.
very fun to watch!
6:36 Remember to set luminance to 1 for the downscaled colour. Otherwise you end up darkening the image because the luminance of the colour is effectively being multiplied by the luminance of the character size.
fantastic as always
but babe, acerola just dropped
I stayed through the ad bc of the cute cato - great job
I really really liked how the shader affected subtitles in the cutscene, this could be a sick effect for corrupted/loading data, like in a context that is not directly a command prompt, that kind of distortion couple be much more interesting than just printing a string of random numbers
i love when i understand what you're saying
it makes me feel so smort
That's so great. I want to see/play an entire game made for this
This gives a lot of “who’s Lila” vibes would be awesome to see something like this from that dev
Babe wake up. A new acerola video dropped
Every time you release a new video, I get reminded to rewatch your older videos
I definitely think this style of shader would go great with a old school style dungeon crawler. Dark and cramped spaces where the issue with distances isnt allowed, and where it is given space the lack of detail gives the area a hazy foggy feel
This is insanely cool
Thought I’d pop in and say that there’s a game that uses ASCII art entirely for its graphics, its called Stone Story RPG, yes, its a mobile game and has very simple graphics but yk, still works to have enough detail to understand perfectly whats going on.
blessed be thou when acerola uploads
This is so sick
swolcerola with them glasses, absolute banger video
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