Hacker News new | past | comments | ask | show | jobs | submit login
REXPaint: Powerful, User-Friendly ASCII Art Editor (gridsagegames.com)
208 points by subbz on Dec 11, 2018 | hide | past | favorite | 26 comments



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.


I would have said that "gorgeous ASCII particle effects" was an oxymoron, before I saw Cogmind. https://www.gridsagegames.com/blog/2014/03/particle-effects/


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


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


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)


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


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


He's a proper bro. He also posts regularly on reddit with tips on making roguelikes, and posts cool things on Twitter.


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/


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

http://jjclark1982.github.io/rex-viewer/

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


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.


As a matter of fact, there's already one out there!

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


you can still download ACiDDraw here - http://www.acid.org/apps/apps.html


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

https://en.wikipedia.org/wiki/TheDraw


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

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.


That's pretty cool!


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/


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

REXPaint also comes with a lengthy manual covering all of its features in detail: https://www.gridsagegames.com/rexpaint/manual.txt


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?


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/

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


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


Don’t they already do for fonts (sort-of)? http://www.ecma-international.org/publications/files/ECMA-ST..., 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).


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.


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/


reminds me of http://www.jave.de/




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: