
Motore Rails montabile che fornisce 24+ scenari di escape room sulla cybersecurity con password randomizzate, dialoghi NPC compilati JIT e API RESTful per la gestione dello stato del gioco. Progettato per la formazione pratica sulla sicurezza.
Gioco di escape room per formazione in cybersecurity come motore Rails montabile.
Nel tuo Gemfile:
gem 'break_escape', path: 'path/to/break_escape'
Poi:
bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed # Opzionale: crea missioni dagli scenari
Nel tuo config/routes.rb:
mount BreakEscape::Engine => "/break_escape"
export BREAK_ESCAPE_STANDALONE=true
rails server
# Visita http://localhost:3000/break_escape/
Monta in Hacktivity o in un'altra app Rails. Il motore utilizzerà current_user dell'app host tramite Devise.
# config/initializers/break_escape.rb
BreakEscape.configure do |config|
config.standalone_mode = false # true per sviluppo
config.demo_user_handle = 'demo_player'
end
break_escape_missions - Metadati dello scenario (name, display_name, published, difficulty)break_escape_games - Stato del giocatore + snapshot dello scenario (JSONB)break_escape_demo_users - Solo modalità standalone (opzionale)GET /games/:id/scenario - Scenario JSON (generato da ERB)GET /games/:id/ink?npc=X - Script NPC (compilato JIT da .ink)GET /games/:id/bootstrap - Dati iniziali del giocoPUT /games/:id/sync_state - Sincronizza stato del giocatorePOST /games/:id/unlock - Valida tentativo di sbloccoPOST /games/:id/inventory - Aggiorna inventarioGli scenari sono memorizzati come template .json.erb e renderizzati su richiesta con valori randomizzati:
<%= random_password %> - Genera password unica per gioco<%= random_pin %> - Genera PIN unico a 4 cifre<%= random_code %> - Genera codice esadecimale unicoGli script dei dialoghi NPC vengono compilati al primo accesso (~300ms):
.json ed è più recente di .inkinklecate per compilareStato del giocatore memorizzato in colonna JSONB:
I test vengono eseguiti automaticamente su GitHub Actions. Il Gemfile.lock committato blocca le versioni esatte delle gem utilizzate.
bundle install
bundle exec rails db:create db:migrate RAILS_ENV=test
bundle exec rails test
Il motore include uno script bin/setup che avvia il bundle da un checkout gemello di Hacktivity (che ha già tutte le gem richieste vendorizzate):
# Dalla root di BreakEscape — Hacktivity deve trovarsi in ../Hacktivity
bin/setup
bundle exec rails test
# Se Hacktivity è altrove, imposta HACKTIVITY_DIR:
HACKTIVITY_DIR=/path/to/Hacktivity bin/setup
bin/setup copia i file .gem risolti in vendor/cache/ ed esegue bundle install --local. Le directory vendor/cache/ e vendor/bundle/ sono in gitignore; viene committato solo Gemfile.lock.
Vedi HACKTIVITY_INTEGRATION.md per la guida all'integrazione.
Grazie a tutti coloro che hanno contribuito al progetto. Fare riferimento alla storia di GitHub.