
REXPaint: Powerful, User-Friendly ASCII Art Editor - subbz
https://www.gridsagegames.com/rexpaint/
======
hhh
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.

~~~
setr
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

~~~
zzxc
Can confirm it's great as a roguelike. This page is a nice summary of some of
the new features it brings to the genre:
[https://www.gridsagegames.com/cogmind/innovation.html](https://www.gridsagegames.com/cogmind/innovation.html)

~~~
setr
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

~~~
Kyzrati
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...](https://steamcommunity.com/profiles/76561198035898628/recommended/722730/)

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](https://www.reddit.com/r/roguelikedev/wiki/faq_friday))

~~~
setr
Oh damn, thats a lot of material

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 ;)

~~~
Kyzrati
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!)

------
ArtWomb
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.

[https://www.piskelapp.com/](https://www.piskelapp.com/)

~~~
myhf
Here's a Canvas2D-based viewer for REXPaint files:

[http://jjclark1982.github.io/rex-viewer/](http://jjclark1982.github.io/rex-
viewer/)

Adding an editing interface is left as an exercise for the reader.

------
booleanbetrayal
you can still download ACiDDraw here -
[http://www.acid.org/apps/apps.html](http://www.acid.org/apps/apps.html)

~~~
pan69
Ah. That reminds me, I used to use TheDraw on DOS back in the day.

[https://en.wikipedia.org/wiki/TheDraw](https://en.wikipedia.org/wiki/TheDraw)

~~~
nineteen999
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.

Example output:

[https://i.imgur.com/bkwSCEU.png](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](https://i.imgur.com/6cyjZGi.png)

Another example rendered to terminal rather than PNG using Unicode:

[https://i.imgur.com/L45U347.png](https://i.imgur.com/L45U347.png)

Although for some bizarre reason, gnome screenshot tool completed changed the
colors around.

~~~
pan69
That's pretty cool!

------
merlincorey
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.

Ah, bitrot.

[0] [http://picoe.ca/products/pablodraw/](http://picoe.ca/products/pablodraw/)

~~~
jaytaylor
I fixed a networking bug in PabloDraw about 7 years ago and recall
encountering only Visual C++. Are you sure PD is a .NET app?

Or is my definition of .NET wrong?

~~~
gregmac
It depends on .NET 4 (or Mono [1]) and is built on Eto.Forms [2], so it most
definitely is a .NET application, and more than likely is written in C#.

[1] [https://www.mono-project.com/](https://www.mono-project.com/)

[2] [https://github.com/picoe/Eto](https://github.com/picoe/Eto)

------
g5095
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 ..

~~~
Someone
Don’t they already do for fonts (sort-of)? [http://www.ecma-
international.org/publications/files/ECMA-ST...](http://www.ecma-
international.org/publications/files/ECMA-ST/Ecma-048.pdf), section 8.3.53:

 _FNT - FONT SELECTION

    
    
      Notation: (Ps1;Ps2)
      Representation: CSI Ps1;Ps2 02/00 04/04
      Parameter default values: Ps1 = 0; Ps2 =0
    

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._

Also, section 8.3.55 and 8.3.56:

 _8.3.55 GSM - GRAPHIC SIZE MODIFICATION

    
    
      Notation: (Pn1;Pn2)
      Representation: CSI Pn1;Pn2 02/00 04/02
      Parameter default values: Pn1 = 100; Pn2 = 100
    

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

    
    
      Notation: (Pn)
      Representation: CSI Pn 02/00 04/03
      No parameter default value.
    

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)._

------
mathnode
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.

------
jaytaylor
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!

[0] [http://picoe.ca/products/pablodraw/](http://picoe.ca/products/pablodraw/)

------
bepvte
reminds me of [http://www.jave.de/](http://www.jave.de/)

