Dynamic Dungeons: il futuro di Dungeons & Dragons è una plancia animata?

Siete abituati a disegnare a mano gli scenari di Dungeons & Dragons su cui prenderanno vita le vostre avventure? Roba “troppo vintage” per il 21esimo secolo! Il futuro potrebbe essere già stato rivelato da Dynamic Dungeons, il progetto Patreon che trasformerà i nostri viaggi fantasy in opere d’arte animate.

Cascate, castelli in rovina, cerbiatti che sbucheranno dalle foreste e uccelli in volo sono solo alcuni degli elementi che potremo ritrovare nelle mappe di questo singolare progetto.

Con Dynamic Dungeons le vostre sessioni di Dungeons & Dragons prenderanno vita

In realtà si tratta di “semplici” file dinamici da riprodurre su un qualsiasi televisore, possibilmente economico od usato, acquistato appositamente per lo scopo (o magari il vostro televisore principale capovolto e protetto con del perspex per evitare gli, inevitabili, graffi).

Questi ci permetteranno di combattere in svariati scenari, che includono cicli giorno / notte, effetti sonori e la possibilità di attivare e disattivare la griglia a nostro piacimento.

I prezzi dei diversi pacchetti che includono le mappe variano dai 2 $ ai 5 $ (il prezzo si differenzia in base al tipo di effetti inclusi nel pacchetto) e si prestano ovviamente ad essere utilizzati anche con altri giochi di ruolo o giochi da tavolo.

Cosa ne pensate? Fatecelo sapere tramite un commento qui sotto!

jQuery(document).ready(function() { var CONSTANTS = { productMinWidth : 185, productMargin : 20 }; var $adUnits = jQuery('.aalb-product-carousel-unit'); $adUnits.each(function() { var $adUnit = jQuery(this), $wrapper = $adUnit.find('.aalb-pc-wrapper'), $productContainer = $adUnit.find('.aalb-pc-product-container'), $btnNext = $adUnit.find('.aalb-pc-btn-next'), $btnPrev = $adUnit.find('.aalb-pc-btn-prev'), $productList = $productContainer.find('.aalb-pc-product-list'), $products = $productList.find('.aalb-pc-product'), productCount = $products.length; if (!productCount) { return true; } var rows = $adUnit.find('input[name=rows]').length && parseInt($adUnit.find('input[name=rows]').val(), 10); var columns = $adUnit.find('input[name=columns]').length && parseInt($adUnit.find('input[name=columns]').val(), 10); if( columns ) { var productContainerMinWidth = columns * (CONSTANTS.productMinWidth + CONSTANTS.productMargin) + 'px'; $adUnit.css( 'min-width', productContainerMinWidth ); $productContainer.css( 'min-width', productContainerMinWidth ); $products.filter( ':nth-child(' + columns + 'n + 1)' ).css( 'clear', 'both' ); } if (rows && columns) { var cutOffIndex = (rows * columns) - 1; $products.filter(':gt(' + cutOffIndex + ')').remove(); } function updateLayout() { var wrapperWidth = $wrapper.width(); var possibleColumns = columns || parseInt( wrapperWidth / (CONSTANTS.productMinWidth + CONSTANTS.productMargin), 10 ); var actualColumns = columns || possibleColumns < productCount ? possibleColumns : productCount; /** * The actual columns can be zero when the wraperwidth is less than sum of CONSTANTS.productMinWidth and * CONSTANTS.productMargin.The parseInt will use floor function and converts any value less than 1 to * zero.Therefore making actual columns 1 . **/ if( actualColumns == 0 ) { actualColumns = 1; } var productWidth = parseInt( wrapperWidth / actualColumns, 10 ) - CONSTANTS.productMargin; $products.css( 'width', productWidth + 'px' ); /** * Removing the Carousel navigation button when the number of products selected by admin is less * than the actual columns (the number of products) can be shown on screen **/ if( productCount > actualColumns ) { $btnNext.css( 'visibility', 'visible' ).removeClass( 'disabled' ).unbind( 'click' ); $btnPrev.css( 'visibility', 'visible' ).removeClass( 'disabled' ).unbind( 'click' ); } $productContainer.jCarouselLite( { btnNext : '#' + $adUnit.attr( 'id' ) + ' .aalb-pc-btn-next', btnPrev : '#' + $adUnit.attr( 'id' ) + ' .aalb-pc-btn-prev', visible : actualColumns, circular: false } ); } updateLayout(); jQuery(window).resize(updateLayout); }); }); /*! * jCarouselLite - v1.1 - 2014-09-28 * http://www.gmarwaha.com/jquery/jcarousellite/ * Copyright (c) 2014 Ganeshji Marwaha * Licensed MIT (https://github.com/ganeshmax/jcarousellite/blob/master/LICENSE) */ !function(a){a.jCarouselLite={version:"1.1"},a.fn.jCarouselLite=function(b){return b=a.extend({},a.fn.jCarouselLite.options,b||{}),this.each(function(){function c(a){return n||(clearTimeout(A),z=a,b.beforeStart&&b.beforeStart.call(this,i()),b.circular?j(a):k(a),m({start:function(){n=!0},done:function(){b.afterEnd&&b.afterEnd.call(this,i()),b.auto&&h(),n=!1}}),b.circular||l()),!1}function d(){if(n=!1,o=b.vertical?"top":"left",p=b.vertical?"height":"width",q=B.find(">ul"),r=q.find(">li"),x=r.size(),w=x0?z-b.scroll:z+b.scroll)}),b.auto&&h()}function h(){A=setTimeout(function(){c(z+b.scroll)},b.auto)}function i(){return s.slice(z).slice(0,w)}function j(a){var c;a<=b.start-w-1?(c=a+x+b.scroll,q.css(o,-(c*t)+"px"),z=c-b.scroll):a>=y-w+1&&(c=a-x-b.scroll,q.css(o,-(c*t)+"px"),z=c+b.scroll)}function k(a){0>a?z=0:a>y-w&&(z=y-w)}function l(){a(b.btnPrev+","+b.btnNext).removeClass("disabled"),a(z-b.scroll<0&&b.btnPrev||z+b.scroll>y-w&&b.btnNext||[]).addClass("disabled")}function m(c){n=!0,q.animate("left"==o?{left:-(z*t)}:{top:-(z*t)},a.extend({duration:b.speed,easing:b.easing},c))}var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B=a(this);d(),e(),f(),g()})},a.fn.jCarouselLite.options={btnPrev:null,btnNext:null,btnGo:null,mouseWheel:!1,auto:null,speed:200,easing:null,vertical:!1,circular:!0,visible:3,start:0,scroll:1,beforeStart:null,afterEnd:null}}(jQuery);
Potrebbe piacerti anche
Commenti
Caricamento...