Like the ever popular and powerful Pablodraw[0], this is a .Net application.
I tried a few CLI ANSI and ASCII editors on Linux recently, and it was not a great experience. Most are fairly inscrutable with limited documentation, and at least on my OS, some were just plain broken.
REXPaint is not based on .Net, and works flawlessly under Wine on Linux. Although there's no native build, there are a bunch of users on both Linux and OSX (especially since a sizeable portion of the roguelike dev community uses non-Windows platforms).
I have a WIP renderer for the TDF font format for UNIX that I'm working on, which can output the fonts in CP437 or UTF-8 format on the terminal, or with the help of another tool, to a PNG.
Anything that would preclude one from making a similarly-robust HTML5 (Canvas2D) ASCII editor?
Font rendering wouldn't even be required. Static bitmap sprite data in a predefined grid cell layout would suffice. With fore and background color altered via fast pixel manipulation using pre-allocated array buffers. Memory usage, on large canvas areas, might be the only prohibitive issue ;)
I use the wonderful Piskel 2D sprite drawing tool. And it can handle sizable frame counts at 1024x1024 resolution.
Nothing prevents it beyond awkward save/load semantics in the browser. Webgl acceleration would be fairly trivial (to one familiar with opengl) if necessary as well.
Looks like a contender for an alternative to PabloDraw [0], my go-to for drawing ASCII art.
Does REXPaint support real-time shared sessions? That's PD's killer feature, watching a skilled artist work from halfway around the world is an amazing experience!
REXPaint is a great tool, and the only reason I know it exists is from playing the game it was used heavily for, Cogmind. It's a great roguelike game, and if you enjoy them I would suggest you give it a try.
The dev is active in the Roguelike Discord server as well. Any interaction I've had with them has always been positive and kind. Cogmind was great to see grow into what it is today.
Dunno if its actually good as a roguelike, but thats gotta be by far the neatest UI I’ve ever seen. Guy has a good blog as well about cogmind’s development
That page is actually what draws my concern -- it's got a lot of cool UI/UX improvements over other roguelikes, and there's a lot other games could/should learn from this guy... but other than the "A living ecosystem" section, there's nothing at all about the gameplay itself
Even his articles don't mention much about how it all plays out; it seems like he's far more interested in building a roguelike than making a good one (he talks a lot about how it impacts development, but not how it impacts play). But tbf, thats pretty much the starting story of any roguelike's development. I'd definitely start with this guy's resources if I was interested in making one
Ah, this was mainly because it's easiest to show UI/UX innovation in images :P
The gameplay is unique, and much has been written about it, but it's not all in one centralized location like that page, which was easier to put together as simply images for demonstration.
For the other side of things there are many many articles on the blog detailing systems and mechanics and design considerations. Plus there are Steam reviews, which give a pretty clear picture of what people think. This one, and many others, are telling: https://steamcommunity.com/profiles/76561198035898628/recomm...
Also hi :)
(Edit: Oh, and I stopped writing a lot of Cogmind-specific design the articles for the blog in recent years, and some of the writing you might be looking for has gone towards FAQs here: https://www.reddit.com/r/roguelikedev/wiki/faq_friday)
Hahaha, thanks. It's funny when I sometimes get notices from new players who've said they got into it after having read all my blog and FAQs. I'm like "you just read... ALL of that?!"
(I'm happy to have started the FAQ series beyond the blog, because it's about so many other devs' RL projects as well, and we can share and learn so much more!)
It's about time we had terminal emulators that took font/size commands the same way they understand colour changes. There's nothing (today) stopping us from making terminals that support outputting a font-code before dumping out some art like this produces, then setting it back afterward.. Suddenly TUIs could make use of tools like this ..
FNT is used to identify the character font to be selected as primary or alternative font by subsequent occurrences of SELECT GRAPHIC RENDITION (SGR) in the data stream. Ps1 specifies the primary or alternative font concerned:
0 primary font
1 first alternative font
2 second alternative font
3 third alternative font
4 fourth alternative font
5 fifth alternative font
6 sixth alternative font
7 seventh alternative font
8 eighth alternative font
9 ninth alternative font
Ps2 identifies the character font according to a register which is to be established.
GSM is used to modify for subsequent text the height and/or the width of all primary and alternative fonts identified by FONT SELECTION (FNT) and established by GRAPHIC SIZE SELECTION (GSS). The established values remain in effect until the next occurrence of GSM or GSS in the data steam.
Pn1 specifies the height as a percentage of the height established by GSS
Pn2 specifies the width as a percentage of the width established by GSS
GSS is used to establish for subsequent text the height and the width of all primary and alternative fonts identified by FONT SELECTION (FNT). The established values remain in effect until the next occurrence of GSS in the data stream.
Pn specifies the height, the width is implicitly defined by the height.
The unit in which the parameter value is expressed is that established by the parameter value of SELECT SIZE UNIT (SSU).
It looks very impressive, in my moment of ignorance however, I got excited that maybe the REX was referring to REXX. That would have been quite a feat.
26 comments
[ 3.9 ms ] story [ 148 ms ] threadI tried a few CLI ANSI and ASCII editors on Linux recently, and it was not a great experience. Most are fairly inscrutable with limited documentation, and at least on my OS, some were just plain broken.
Ah, bitrot.
[0] http://picoe.ca/products/pablodraw/
Or is my definition of .NET wrong?
[1] https://www.mono-project.com/
[2] https://github.com/picoe/Eto
REXPaint also comes with a lengthy manual covering all of its features in detail: https://www.gridsagegames.com/rexpaint/manual.txt
https://en.wikipedia.org/wiki/TheDraw
Example output:
https://i.imgur.com/bkwSCEU.png
That looks like a 4 at the end, but it's a 9. A lot of the TDF fonts are a bit crazy.
Better image showing the different colored versions that are stored inside some TDF's:
https://i.imgur.com/6cyjZGi.png
Another example rendered to terminal rather than PNG using Unicode:
https://i.imgur.com/L45U347.png
Although for some bizarre reason, gnome screenshot tool completed changed the colors around.
Font rendering wouldn't even be required. Static bitmap sprite data in a predefined grid cell layout would suffice. With fore and background color altered via fast pixel manipulation using pre-allocated array buffers. Memory usage, on large canvas areas, might be the only prohibitive issue ;)
I use the wonderful Piskel 2D sprite drawing tool. And it can handle sizable frame counts at 1024x1024 resolution.
https://www.piskelapp.com/
http://jjclark1982.github.io/rex-viewer/
Adding an editing interface is left as an exercise for the reader.
I've been contributing some code. It's called glyphdrawing.club and is a lot of fun. No colors yet, but they are coming next.
Check it out:
https://glyphdrawing.club/
https://github.com/hlotvonen/glyph-drawing-club
Does REXPaint support real-time shared sessions? That's PD's killer feature, watching a skilled artist work from halfway around the world is an amazing experience!
[0] http://picoe.ca/products/pablodraw/
The dev is active in the Roguelike Discord server as well. Any interaction I've had with them has always been positive and kind. Cogmind was great to see grow into what it is today.
Even his articles don't mention much about how it all plays out; it seems like he's far more interested in building a roguelike than making a good one (he talks a lot about how it impacts development, but not how it impacts play). But tbf, thats pretty much the starting story of any roguelike's development. I'd definitely start with this guy's resources if I was interested in making one
The gameplay is unique, and much has been written about it, but it's not all in one centralized location like that page, which was easier to put together as simply images for demonstration.
For the other side of things there are many many articles on the blog detailing systems and mechanics and design considerations. Plus there are Steam reviews, which give a pretty clear picture of what people think. This one, and many others, are telling: https://steamcommunity.com/profiles/76561198035898628/recomm...
Also hi :)
(Edit: Oh, and I stopped writing a lot of Cogmind-specific design the articles for the blog in recent years, and some of the writing you might be looking for has gone towards FAQs here: https://www.reddit.com/r/roguelikedev/wiki/faq_friday)
When I finish reading through, you’ve probably got a buy-in out of me; that much thinking has gotta produce something interesting, good or bad ;)
(I'm happy to have started the FAQ series beyond the blog, because it's about so many other devs' RL projects as well, and we can share and learn so much more!)
FNT - FONT SELECTION
FNT is used to identify the character font to be selected as primary or alternative font by subsequent occurrences of SELECT GRAPHIC RENDITION (SGR) in the data stream. Ps1 specifies the primary or alternative font concerned: Ps2 identifies the character font according to a register which is to be established.Also, section 8.3.55 and 8.3.56:
8.3.55 GSM - GRAPHIC SIZE MODIFICATION
GSM is used to modify for subsequent text the height and/or the width of all primary and alternative fonts identified by FONT SELECTION (FNT) and established by GRAPHIC SIZE SELECTION (GSS). The established values remain in effect until the next occurrence of GSM or GSS in the data steam.Pn1 specifies the height as a percentage of the height established by GSS
Pn2 specifies the width as a percentage of the width established by GSS
8.3.56 GSS - GRAPHIC SIZE SELECTION
GSS is used to establish for subsequent text the height and the width of all primary and alternative fonts identified by FONT SELECTION (FNT). The established values remain in effect until the next occurrence of GSS in the data stream. Pn specifies the height, the width is implicitly defined by the height.The unit in which the parameter value is expressed is that established by the parameter value of SELECT SIZE UNIT (SSU).