From 443370f05640ebce4466f567321bc35358a725ed Mon Sep 17 00:00:00 2001 From: Matt Soucy Date: Sun, 2 Apr 2023 14:09:00 -0400 Subject: [PATCH] Initialize with Squib template --- .gitignore | 4 +++ ABOUT.md | 19 ++++++++++++++ Gemfile | 11 +++++++++ Guardfile | 21 ++++++++++++++++ IDEAS.md | 22 +++++++++++++++++ PLAYTESTING.md | 26 ++++++++++++++++++++ Rakefile | 27 ++++++++++++++++++++ _output/.gitignore | 1 + config.yml | 50 +++++++++++++++++++++++++++++++++++++ data/game.xlsx | Bin 0 -> 8656 bytes docs/PNP NOTES.md | 4 +++ docs/RULES.md | 21 ++++++++++++++++ img/example.svg | 60 +++++++++++++++++++++++++++++++++++++++++++++ layouts/deck.yml | 27 ++++++++++++++++++++ src/deck.rb | 34 +++++++++++++++++++++++++ src/version.rb | 3 +++ 16 files changed, 330 insertions(+) create mode 100644 .gitignore create mode 100644 ABOUT.md create mode 100644 Gemfile create mode 100644 Guardfile create mode 100644 IDEAS.md create mode 100644 PLAYTESTING.md create mode 100644 Rakefile create mode 100644 _output/.gitignore create mode 100644 config.yml create mode 100644 data/game.xlsx create mode 100644 docs/PNP NOTES.md create mode 100644 docs/RULES.md create mode 100644 img/example.svg create mode 100644 layouts/deck.yml create mode 100644 src/deck.rb create mode 100644 src/version.rb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7598f0b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +_output/*.png +_output/*.pdf +~$* +.DS_Store diff --git a/ABOUT.md b/ABOUT.md new file mode 100644 index 0000000..3c7b272 --- /dev/null +++ b/ABOUT.md @@ -0,0 +1,19 @@ +My Awesome Game +=============== + +Check out my awesome game! + + +Objective +--------- + + + +Gameplay +-------- + + + +Ending the Game +--------------- + diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..2ddf5a5 --- /dev/null +++ b/Gemfile @@ -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' diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000..91e471b --- /dev/null +++ b/Guardfile @@ -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 diff --git a/IDEAS.md b/IDEAS.md new file mode 100644 index 0000000..0adc549 --- /dev/null +++ b/IDEAS.md @@ -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 + + diff --git a/PLAYTESTING.md b/PLAYTESTING.md new file mode 100644 index 0000000..844ff90 --- /dev/null +++ b/PLAYTESTING.md @@ -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? diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..7872b00 --- /dev/null +++ b/Rakefile @@ -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 diff --git a/_output/.gitignore b/_output/.gitignore new file mode 100644 index 0000000..044bca6 --- /dev/null +++ b/_output/.gitignore @@ -0,0 +1 @@ +Keep this here so that Git knows to keep the _output directory on a fresh clone \ No newline at end of file diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..81f7d5f --- /dev/null +++ b/config.yml @@ -0,0 +1,50 @@ +# Settings in the config.yml are overriding Squib's defaults. Anything in the main script will override this. + +# Looking for DPI? It needs to be a parameter to Squib::Deck.new. See https://squib.readthedocs.io/en/latest/dsl/deck.html + +#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 + +# How many pixels are in a "cell"? +# cell_px: 37.5 # default \ No newline at end of file diff --git a/data/game.xlsx b/data/game.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fadeff5b67c75ab1ad326bf6219d9946c1933488 GIT binary patch literal 8656 zcmeHMby!sEw;s9%7`g`$DM<-IxWpZovs?0NRy&wln^?|kvD^{ww+nyMI>v0>}sl4m+X&0GL<+ z02u%m{ehg5qZ`!G%~Tie40V0Tnb^9GV_&~4qH>BiS z?}ulH78m2vH_<=1v5u4M6>o5(Zk2}p+?UN#ORoyIokh!j_yOyIICa@HtD&s)vOUkK zp~ej}f`aHW*q+3Na;8FHZt4B#>exu3ENa4?9qjR1oO=z^5FXp>m)BV+g=+8xKDY0y ze~~Q-lagb3eRHiC{p91OM1O}Nx+;e|HAKYgi8eQ_$|wDn7A<~(`!_1mTp9Fu5|Ggx z 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 + + + + + + + image/svg+xml + + + + + + + + + diff --git a/layouts/deck.yml b/layouts/deck.yml new file mode 100644 index 0000000..e50d9e1 --- /dev/null +++ b/layouts/deck.yml @@ -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 diff --git a/src/deck.rb b/src/deck.rb new file mode 100644 index 0000000..044fd02 --- /dev/null +++ b/src/deck.rb @@ -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 diff --git a/src/version.rb b/src/version.rb new file mode 100644 index 0000000..d017193 --- /dev/null +++ b/src/version.rb @@ -0,0 +1,3 @@ +module MySquibGame + VERSION = '1.0' +end