Card Builder

I’m starting another side project; I have one at a time (other than SRPG) allotted as a way of learning new tech and getting a mental break from other things. This one is related to the previous Numenera card generator. I’d like to generalize the concept into a broader ‘card builder’ tool.

Technology:

  • C#: I’m pretty comfortable with the language, and it’s one of my favorites.
  • OpenGL (probably OpenTK) for rendering: I have just a tiny bit of exposure to OpenGL and wouldn’t mind a bit more, plus it should be easier to do certain image manipulation/text rendering tasks. Assuming OpenGL / OpenTK can do what I need, namely: 1) solid font rendering with text wrapping, 2) dynamic texture generation, and 3) saving a dynamic texture to disk in a standard file format at high resolution.
  • GTK or WinForms/WPF depending on whether cross-platform functionality is important. Might be fun to learn GTK.
  • Visual Studio or MonoDevelop for coding: I have VS experience and it’s a great IDE. Some OpenTK tasks may be easier in MonoDevelop however.

Goals & Features:

  • Define card templates with field variables (e.g. title, description, cost), field placement, and image background layer. Templates can be saved to some kind of text-based config for reuse.
  • Visually add/edit/remove template fields, with control for text wrapping, fonts and font styles, alignment, etc.
  • Import values from disk to populate templates. CSV import as default type.
  • Live editing of template with values loaded (onscreen cards should update to match template).
  • Export of single card or all cards with resolution and file type options, including print-ready (300dpi+).

Nice-to-Haves:

  • 3D card preview with backs.
  • Save/open groups of templates as presets. e.g. D&D 5E Spell Cards, Numenera Power Cards, etc.
  • Text formats are defined sensibly enough that they can be edited directly outside of the interface.
  • Card searching/filtering.
  • XLSX import.

Need-to-Think-Abouts:

  • Dynamically sized/placed elements (for example, the Numenera generator automatically places a colored bar with text directly below a variable-sized text block).