Browse Source
[skip ci] Needs to be documented (new page?) and needs to be updated for unit tests.dev
21 changed files with 406 additions and 30 deletions
@ -0,0 +1,4 @@ |
|||||||
|
_output/*.png |
||||||
|
_output/*.pdf |
||||||
|
~$* |
||||||
|
.DS_Store |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
My Awesome Game |
||||||
|
=============== |
||||||
|
|
||||||
|
Check out my awesome game! |
||||||
|
|
||||||
|
|
||||||
|
Objective |
||||||
|
--------- |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Gameplay |
||||||
|
-------- |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ending the Game |
||||||
|
--------------- |
||||||
|
|
||||||
@ -0,0 +1,11 @@ |
|||||||
|
source 'https://rubygems.org' |
||||||
|
|
||||||
|
gem 'squib' |
||||||
|
gem 'guard' |
||||||
|
gem 'guard-rake' |
||||||
|
|
||||||
|
# If you do any simulation or anything fancy, you might want this |
||||||
|
# gem 'rspec' # Unit testing with behavior-driven development |
||||||
|
|
||||||
|
# If you want to generate PDFs manually (e.g. rules) this is good |
||||||
|
# gem 'prawn' |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
group :default do |
||||||
|
guard 'rake', :task => 'default' do |
||||||
|
watch %r{data/.*\.xlsx$} |
||||||
|
watch %r{data/.*\.csv$} |
||||||
|
watch %r{src/.*\.rb$} |
||||||
|
watch %r{.*\.yml} |
||||||
|
watch %r{img/.*\.svg$} |
||||||
|
watch %r{img/.*\.png$} |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
group :deck do |
||||||
|
guard 'rake', :task => 'default' do |
||||||
|
watch %r{data/.*\.xlsx$} |
||||||
|
watch %r{data/.*\.csv$} |
||||||
|
watch %r{src/.*\.rb$} |
||||||
|
watch %r{.*\.yml} |
||||||
|
watch %r{img/.*\.svg$} |
||||||
|
watch %r{img/.*\.png$} |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# Title Ideas |
||||||
|
|
||||||
|
* First idea |
||||||
|
* Second idea |
||||||
|
|
||||||
|
|
||||||
|
# Things to Try |
||||||
|
|
||||||
|
* Idea |
||||||
|
* Idea |
||||||
|
|
||||||
|
# Feedback Ideas |
||||||
|
|
||||||
|
* Feedback |
||||||
|
* Feedback |
||||||
|
|
||||||
|
# Problems To Work On |
||||||
|
|
||||||
|
* Problem |
||||||
|
* Problem |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,26 @@ |
|||||||
|
# Playtesting Log |
||||||
|
|
||||||
|
# Playtest Report Survey |
||||||
|
|
||||||
|
## Basic Info |
||||||
|
* Num. Players: |
||||||
|
* How many sessions of this game have you played before? |
||||||
|
* How long did you play? |
||||||
|
* How did you prepare for teaching the rules? Read the sheet with everyone there, or did someone read it ahead of time? |
||||||
|
* What types of players played with you? What are their favorite games? |
||||||
|
* What version were you testing? |
||||||
|
* What date did you play? |
||||||
|
|
||||||
|
## Did it work? |
||||||
|
* Was there a moment that you felt the game was "broken"? Describe what happened. |
||||||
|
* How close were the scores? Did everyone feel like they had a fair chance at winning? |
||||||
|
* Were there any moments that you had to go back to the rules for clarification? What resulted of that - are you still unclear, or was it just a misunderstanding? |
||||||
|
* Any ideas for clearer rules? |
||||||
|
* Any ideas for clearer icons, artwork, in-game helps, etc? |
||||||
|
|
||||||
|
## Was it fun? |
||||||
|
* Based on the description, artwork, branding, etc. was this game what you expected? |
||||||
|
* Were the theme, artwork, and icons engaging? |
||||||
|
* Did this game have the depth of strategy that you were expecting? |
||||||
|
* What were the moments that people felt like they were having the most fun? The least fun? |
||||||
|
* Assuming trivial issues are fixed, would you recommend this to someone else? |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
require 'squib' |
||||||
|
require 'irb' |
||||||
|
require 'rake/clean' |
||||||
|
|
||||||
|
# Add Rake's clean & clobber tasks |
||||||
|
CLEAN.include('_output/*').exclude('_output/gitkeep.txt') |
||||||
|
|
||||||
|
desc 'By default, just build the deck without extra options' |
||||||
|
task default: [:deck] |
||||||
|
|
||||||
|
desc 'Build everything, with all the options' |
||||||
|
task all: [:with_pnp, :with_proofs, :deck] |
||||||
|
|
||||||
|
desc 'Build the deck' |
||||||
|
task(:deck) { load 'src/deck.rb' } |
||||||
|
|
||||||
|
desc 'Enable proof lines' |
||||||
|
task(:with_proofs) do |
||||||
|
puts "Enabling proofing lines." |
||||||
|
Squib.enable_build_globally :proofs |
||||||
|
end |
||||||
|
|
||||||
|
desc 'Enable print-and-play builds' |
||||||
|
task(:with_pnp) do |
||||||
|
puts "Enabling print-and-play builds." |
||||||
|
Squib.enable_build_globally :pnp |
||||||
|
end |
||||||
@ -0,0 +1 @@ |
|||||||
|
Keep this here so that Git knows to keep the _output directory on a fresh clone |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
# Settings in the config.yml are overriding Squib's defaults. Anything in the main script will override this. |
||||||
|
|
||||||
|
# DPI is used in making PDFs and in unit conversions |
||||||
|
# Default: 300 |
||||||
|
#dpi: 72 |
||||||
|
|
||||||
|
#antialias: best #recommended. Only about 10% slower than fast |
||||||
|
#antialias: default # set the anti-aliasing algorithm. default defers to the underlying graphics device. See http://www.cairographics.org/manual/cairo-cairo-t.html#cairo-antialias-t |
||||||
|
|
||||||
|
# Text hints are used to show the boundaries of text boxes. |
||||||
|
# Can be enabled/disabled at the command-level, or set globally with `set` |
||||||
|
#text_hint: '#F00' |
||||||
|
|
||||||
|
# Show progress bars on the command line for potentially long-running operations |
||||||
|
progress_bars: true |
||||||
|
|
||||||
|
#Enable some custom colors that can be used in any color |
||||||
|
#custom_colors: |
||||||
|
# foo: '#abc' |
||||||
|
|
||||||
|
#For reading image file command (e.g. png and svg), read from this directory instead |
||||||
|
img_dir: img |
||||||
|
#img_dir: img-bw |
||||||
|
|
||||||
|
# Use a SVG cairo back end, instead of an in-memory buffer |
||||||
|
# backend: :memory # default |
||||||
|
# backend: :svg # can create scalable pdfs, but rendering done at the printer level is not as good as Cairo. |
||||||
|
|
||||||
|
# Configure what text markup uses replace characters |
||||||
|
# Below are the defaults |
||||||
|
# lsquote: "\u2018" #note that Yaml wants double quotes here to use escape chars |
||||||
|
# rsquote: "\u2019" |
||||||
|
# ldquote: "\u201C" |
||||||
|
# rdquote: "\u201D" |
||||||
|
# em_dash: "\u2014" |
||||||
|
# en_dash: "\u2013" |
||||||
|
# ellipsis: "\u2026" |
||||||
|
|
||||||
|
# We can also disallow smart quotes and only allow explicit replacements with ``LaTeX-style'' quotes. |
||||||
|
# smart_quotes: false |
||||||
|
|
||||||
|
# By default, Squib warns when a text box is ellipsized. This can get verbose |
||||||
|
# and can be turned off here |
||||||
|
warn_ellipsize: true # default |
||||||
|
# warn_ellipsize: false # turn off entirely |
||||||
|
|
||||||
|
# By default, Squib will warn if a PNG is being up-scaled. |
||||||
|
warn_png_scale: true # default |
||||||
|
# warn_png_scale: false # turn off entirely |
||||||
Binary file not shown.
@ -0,0 +1,4 @@ |
|||||||
|
Print and Play Notes |
||||||
|
==================== |
||||||
|
|
||||||
|
Fill this out to give tips on how to play this with print and play. |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# Intro |
||||||
|
|
||||||
|
What is this game about? How many players? |
||||||
|
|
||||||
|
# Objective |
||||||
|
|
||||||
|
What is the object of the game? |
||||||
|
|
||||||
|
# Components |
||||||
|
|
||||||
|
What are the components? List them out. |
||||||
|
|
||||||
|
# Gameplay |
||||||
|
|
||||||
|
What does each turn look like? Describe a turn. |
||||||
|
|
||||||
|
# Scoring |
||||||
|
|
||||||
|
How is victory assigned? |
||||||
|
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@ -0,0 +1,27 @@ |
|||||||
|
name: |
||||||
|
x: 90 |
||||||
|
y: 90 |
||||||
|
width: 500 |
||||||
|
height: 50 |
||||||
|
font: Arial 18 |
||||||
|
valign: middle |
||||||
|
align: left |
||||||
|
ellipsize: false |
||||||
|
|
||||||
|
ATK: |
||||||
|
x: 90 |
||||||
|
y: 190 |
||||||
|
width: 200 |
||||||
|
height: 50 |
||||||
|
font: Arial 12 |
||||||
|
valign: middle |
||||||
|
align: left |
||||||
|
ellipsize: false |
||||||
|
DEF: |
||||||
|
extends: ATK |
||||||
|
y: += 75 |
||||||
|
|
||||||
|
version: |
||||||
|
font: Arial 6 |
||||||
|
x: 725 |
||||||
|
y: 45 |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
require 'squib' |
||||||
|
require_relative 'version' |
||||||
|
|
||||||
|
# Note: run this code by running "rake" at the command line |
||||||
|
# To see full list of options, run "rake -T" |
||||||
|
|
||||||
|
data = Squib.xlsx file: 'data/game.xlsx', sheet: 0 |
||||||
|
|
||||||
|
Squib::Deck.new(cards: data.nrows) do |
||||||
|
background color: :white |
||||||
|
use_layout file: 'layouts/deck.yml' |
||||||
|
|
||||||
|
text str: data.name, layout: :name |
||||||
|
|
||||||
|
text str: data.atk.map { |s| "#{s} ATK" }, layout: :ATK |
||||||
|
text str: data.def.map { |s| "#{s} DEF" }, layout: :DEF |
||||||
|
|
||||||
|
svg file: 'example.svg' |
||||||
|
|
||||||
|
text str: MySquibGame::VERSION, layout: :version |
||||||
|
|
||||||
|
build(:proofs) do |
||||||
|
safe_zone |
||||||
|
cut_zone |
||||||
|
end |
||||||
|
|
||||||
|
save format: :png |
||||||
|
|
||||||
|
build(:pnp) do |
||||||
|
save_sheet prefix: 'pnp_sheet_', |
||||||
|
trim: '0.125in', |
||||||
|
rows: 3, columns: 3 |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
module MySquibGame |
||||||
|
VERSION = '1.0' |
||||||
|
end |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
require_relative 'new' |
||||||
|
require_relative 'make_sprue' |
||||||
|
|
||||||
|
module Squib |
||||||
|
class CLI |
||||||
|
|
||||||
|
def run |
||||||
|
Mercenary.program(:squib) do |p| |
||||||
|
p.version Squib::VERSION |
||||||
|
p.description 'A Ruby DSL for prototyping card games' |
||||||
|
p.syntax 'squib <subcommand> [options]' |
||||||
|
|
||||||
|
p.command(:new) do |c| |
||||||
|
c.syntax 'new PATH' |
||||||
|
c.description 'Creates a new basic Squib project scaffolding in PATH. Must be a new directory or already empty.' |
||||||
|
|
||||||
|
c.option 'advanced', '--advanced', 'Create the advanced layout' |
||||||
|
|
||||||
|
c.action do |args, options| |
||||||
|
advanced = options.key? 'advanced' |
||||||
|
Squib::Commands::New.new.process(args, advanced) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
p.command(:make_sprue) do |c| |
||||||
|
c.syntax 'make_sprue' |
||||||
|
c.description 'Creates a sprue definition file.' |
||||||
|
|
||||||
|
c.action do |args, options| |
||||||
|
Squib::Commands::MakeSprue.new.process(args) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue