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