All Projects â†’ statico â†’ Spittoon

statico / Spittoon

🖼 Sequential-art comic-strip generator written in Ruby which uses RMagick (2005)

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Spittoon

Basetheme
Themes for base plotting system in R
Stars: ✭ 99 (-9.17%)
Mutual labels:  graphics
Root
The official repository for ROOT: analyzing, storing and visualizing big data, scientifically
Stars: ✭ 1,377 (+1163.3%)
Mutual labels:  graphics
Yocto Gl
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics
Stars: ✭ 1,391 (+1176.15%)
Mutual labels:  graphics
Webcomic
Comic publishing power for the web. Turn your WordPress-powered site into a comic publishing platform with Webcomic.
Stars: ✭ 100 (-8.26%)
Mutual labels:  comics
Distort Grid
distort and warp images in the browser
Stars: ✭ 101 (-7.34%)
Mutual labels:  graphics
Deko3d
Homebrew low level graphics API for Nintendo Switch (Nvidia Tegra X1)
Stars: ✭ 103 (-5.5%)
Mutual labels:  graphics
Pris
A language for designing slides
Stars: ✭ 97 (-11.01%)
Mutual labels:  graphics
Comics
comics is a web comics aggregator
Stars: ✭ 108 (-0.92%)
Mutual labels:  comics
Awesome Livecoding
All things livecoding
Stars: ✭ 1,373 (+1159.63%)
Mutual labels:  graphics
As
VCV Rack Modules
Stars: ✭ 104 (-4.59%)
Mutual labels:  graphics
Physics3d
A 3D physics engine
Stars: ✭ 101 (-7.34%)
Mutual labels:  graphics
Lipo
👄 Free image manipulation API service built on top of Sharp (an alternative to Jimp, Graphics Magic, Image Magick, and PhantomJS)
Stars: ✭ 101 (-7.34%)
Mutual labels:  graphics
Pagebot
Scripted page layout framework for Python.
Stars: ✭ 103 (-5.5%)
Mutual labels:  graphics
Imgui Ext
Rust library for building imgui GUIs using a derive macro
Stars: ✭ 100 (-8.26%)
Mutual labels:  graphics
Vulkan Samples
One stop solution for all Vulkan samples
Stars: ✭ 2,009 (+1743.12%)
Mutual labels:  graphics
Nyuziprocessor
GPGPU microprocessor architecture
Stars: ✭ 1,351 (+1139.45%)
Mutual labels:  graphics
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+1168.81%)
Mutual labels:  graphics
2d Unity Experiments
A collection of visual Unity experiments with latest packages (URP, Shader Graph, Cinemachine, etc).
Stars: ✭ 107 (-1.83%)
Mutual labels:  graphics
Q comic
一款仿知音漫客的漫画APP
Stars: ✭ 107 (-1.83%)
Mutual labels:  comics
Computational Graphics Thu 2018
Computational Graphics - THU Spring 2018
Stars: ✭ 104 (-4.59%)
Mutual labels:  graphics

Spittoon

Spittoon is a comic strip generator. It is an implementation of the Microsoft Comic Chat algorithm described in the paper, Comic Chat (Reprinted from SIGGRAPH '96 Proceedings).

I wrote this as an experiment to learn Ruby in 2005. I had planned on making an ongoing comic strip, but it turned out that I wasn't very funny. I've now released it as open-source.

License

The source code is licensed under the MIT License.

The images in the artwork/ and backgrounds/ directories are licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Getting Started

First, install RMagick.

Next, cd to examples/ and run:

ruby -I ../lib ../bin/make_comic.rb -c config.yaml -s spec -o example.png

Voila -- a comic has been generated.

...or not. Spittoon may crash on you. If it does, just re-run the generator. Spittoon picks variations at random and sometimes they simply don't work. When something doesn't fit, Spittoon bails. (Yes, I know this isn't great, but I had always planned on running this from a terminal where I could re-run the command easily.)

Chat Spec Scripts

I called them "specs" because originally they were YAML files of "chat specifications." This became a pain in the ass so I created a simpler but more magical text format.

For example:

a->b: hey! (happy/exclaiming)
b: hi! (positive)
c

This is a one-panel comic with three characters. The characters will be chosen at random (see characters in config.yaml) and assigned to a, b, and c. For specific characters you can use their names directly, e.g. alice->bob.

a->b means that a will be looking at b. The direction of the other characters will be determined by who is speaking. It is possible to cram four or more characters in a panel and have multiple groups chatting with one another.

Order matters. The characters will be placed in the order defined in the spec. This makes things a little hairy when you want to have one character monologuing, but Spittoon tries to figure it out.

(happy/exlaiming) picks the happy face and exclaiming pose from the artwork directory. You can specify exact faces and poses or you can specify a set which is named in config.yaml, such as positive or negative. You can specify just a face with (facename) and just the pose with (/posename).

To create a new panel, simply re-use a character name. Since the same character can't appear twice in the same panel, this is the signal that a new panel is necessary.

Narration is possible, meaning you can include a rectangular chat balloon which isn't pointing toward anyone. Unfortunately, it still needs to be attached to a character:

robin* back at the bat cave...
batman: are those steaks ready yet?

See the spec in examples/spec for another example.

Customization

The basic idea of Spittoon was to write a minimal chat script (ideally being able to paste from IRC with few modifications) and have a comic be generated with random variations. It's supposed to be mostly hands-off.

There are a lot of options in examples/config.yaml. They're mostly self-obvious.

Panel layouts, however, are hard-coded. How many panels you get in the strip is determined by the chat script -- more panels are added when a text balloon can't fit in a single strip. A 3-panel strip is always rendered vertically.

Want better fonts? A great source for free and commercial comic fonts is Blambot Comic Fonts. A lot of comic fonts are dual-weight -- lowercase text produces normal-weight letters and uppercase text produces bold letters.

Development

I am not actively using or maintaining Spittoon, but I welcome your patches. Fork at your leisure.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].