Sand Game 2

Java JavaFX Zdrojákoviště Sand Game 2

Sand Game 2 je tvořivá hra typu falling-sand, ve které máte k dispozici elementy a prázdné plátno, a je jen na Vás, jak si s nimi pohrajete.

Ovládání

Nanášení elementů

Jednotlivé elementy (popř. efekty ovlivňující elementy) jsou na plátno nanášeny pomocí štětců. Štětce jsou vybírány příslušným tlačítkem v seznamu po levé straně plátna. Tvar a rozměry štětce je možné nastavit v menu > nástroje.

  • levé tlačítko myši – aplikuje primární štětec
  • pravé tlačítko myši – aplikuje sekundární štětec
  • shift – současně s levým nebo pravým tlačítkem myši nakreslí přímku
  • ctrl – současně s levým nebo pravým tlačítkem myši nakreslí obdélník
  • alt – zabraňuje překreslování stávajících elementů; funguje i v kombinaci se shift nebo ctrl (alt gr)
  • prostřední tlačítko myši – funkce kapátka – na levé tlačítko myši vybere štětec, kterým byl nanesen element na plátně (je-li k dispozici)
  • prostřední tlačítko myši + shift nebo ctrl – plechovka

Šablony

Několik připravených šablon je v menu > nástroje. Levým tlačítkem se vybraná šablona umístí, pravým se proces umístění zruší.

Stejně jako šablony lze vkládat i uložené pozice.

Další nástroje

Různé nástroje pro úpravu plátna jsou k nalezení v menu > úpravy. Často používané nástroje mají přidělené klávesové zkratky.

Ukládání a načítání

Plátno je možné uložit jako:

  • soubor s příponou .sgs – ukládání je řešeno formou serializace. Toto řešení s sebou ovšem nese nevýhody, jako větší paměťovou náročnost a občasnou nekompatibilitu mezi jednotlivými verzemi. Výhodou je, že je plátno zachováno přesně ve stavu, v jakém bylo uloženo.
  • soubor s příponou .sgb – ukládají se pouze ID štětců, kterými byly jednotlivé elementy naneseny – vzniká tak jakási šablona, podle které se elementy příště nanesou. Kompatibilita s dalšími verzemi je zaručena.

Scriptování

Ke scriptování může být použit jednoduchý vestavěný editor. Tlačítko vyvolávající dialog s editorem naleznete v toolbaru.

Druhou možností je vytvoření složky scripts uvnitř složky, ve které byl program spuštěn. V případě jejího nalezení program zobrazí celý její obsah v menu, odkud mohou být jednotlivé scripty pohodlně spouštěny.

Nechte se inspirovat ukázkovými scripty.

Výkon

Plátno je rozdělené do tzv. chunků – čtvercových oblastí o rozměrech obvykle 20×20 bodů. Ty umožňují rozlišit oblasti, ve kterých se nic nehýbe / neděje a tyto oblasti jsou poté uspány a tak dochází k šetření výkonu. Cílem je tedy mít co nejméně aktivních chunků.

Díky tomuto rozdělení je možné mít např. obrovskou plochu písku, která v klidovém stavu nevyžaduje téměř žádný výkon.

Dalším faktorem ovlivňujícím výkon jsou rozměry plátna. Pokud budete provádět nějaké složitější operace nebo máte slabší počítač, tak je nezapomeňte zmenšit.

Při dodržení těchto zásad by hra měla být hratelná i na slabších PC.

Dodatečné informace

Hra se neinstaluje, ani v počítači samovolně nezanechává žádné soubory.

Ke spuštění je vyžadovaná Java 8u40.

Repozitář se zdrojovými kódy: https://github.com/…/Sand-Game-2


Galerie

Hra byla vytvořena v roce 2016.

 

Stáhnout

Staženo 197x (1.18 MB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (3)

Hru pro vás napsal Hartrik
Avatar
Autor měl dříve programování jen jako hobby, nyní studuje informatiku na vysoké škole.

Jak se ti líbí článek?
Celkem (18 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Zdrojákoviště Java - JavaFX

 

 

Komentáře
Zobrazit starší komentáře (29)

Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Já už teď asi taky :) ale už je pozdě to měnit

 
Odpovědět 24.2.2015 15:20
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Při významnějších verzích jsem chtěl měnit číslo před tečkou.

 
Odpovědět 24.2.2015 15:25
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Hartrik
David Novák:

Zajímavé.. Jako nic proti.. Ale takové verzování jsem nikdy neviděl :D
(ale fakt to neber nějak negativně nebo tak..)

Odpovědět  ±0 24.2.2015 15:27
Chyba je mezi klávesnicí a židlí.
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Změny ve verzi 2.02 Beta
• přechod na Java 8u40, použití nových dialogů
• při otevírání souboru s metodou drag & drop přidána možnost vložení
• přidány XML kontrolery do souborů s uloženými pozicemi
• složka scripts, ze které se scripty přenáší do menu, odkud se dají pohodlně spustit
• přidány nové nástroje - kruh, trojúhelník, randomizér
• přidána plechovka (prostřední tlačítko myši + ctrl nebo shift)
• vylepšena přesnost některých kurzorů
• filtrování štětců
• tajně jsem změnil způsob číslování verzí

scriptování:
• přidáno API želví grafiky (třída Turtle)
• možnost vytvářet nástroje/tvary (ToolFactory)
• třída Elements
• přidány nové ukázkové scripty

 
Odpovědět  +3 13.4.2015 16:07
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Hartrik
Zdeněk Pavlátka:

luxusní. Musim se s těmi scripty naučit :D

Odpovědět 11.7.2015 20:26
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
-snaživec-
Člen
Avatar
-snaživec-:

Akú knižnicu si použil na zvýraznenie syntaxe v tom editore?

Odpovědět 12.8.2015 20:09
Pomali ďalej zájdeš.
Avatar
-snaživec-
Člen
Avatar
Odpovědět 13.8.2015 8:06
Pomali ďalej zájdeš.
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Už pár měsíců jsem na projektu nepracoval, ale dnes jsem se alespoň odhodlal a nahrál celý projekt na GitHub – https://github.com/…/Sand-Game-2
Později se k vývoji asi ještě vrátím, mám ještě spoustu nápadů, ale teď se chci věnovat jiným aplikacím.

Na mé poměry je to už docela velký projekt – napočítal jsem něco pod 23 000 řádků Java kódu. Ale zase kdybych to kvůli výkonu na některých místech nerozepisoval, bylo by to o něco méně.

 
Odpovědět  +3 24.8.2015 18:05
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Po delší době se hlásím s novou verzí.

Změny ve verzi 2.03 Beta

  • nový element: napalm
  • přepracován systém přenosu tepla
    • teplota je oddělena od elementů (samostané pole), což umožňuje pracovat s ní o mnoho efektivněji
    • výrazně tím také klesla paměťová náročnost
    • vlivem těchto skutečností byla schopnost vést teplo přidána skoro všem elementům
  • přidána možnost zobrazit teplotu (menu / možnosti / heatmap)
  • přidána možnost změnit velikost chunků (v dialogu pro změnu rozměrů)
    • výchozí velikost se zároveň změnila na 20×20 bodů, která se ve většině případů ukázala jako nejlepší
    • platí, že čím menší velikost, tím větší režie, ale zároveň menší šance, že jsou procházeny i elementy které by jinak mohly být uspány
  • vylepšen engine
  • vylepšen formát ukládání
    • .sgb podporuje teplotu a další efekty
    • sjednocení formátů .sgb a .sbs (nyní je to v podstatě jen jeden formát, rozdíl je jen v tom, jakým způsobem se uloží plátno; při načítání na příponě nezáleží)
  • tlačítko start/stop reflektuje aktuální stav, stejně tak některé ukazatele
  • nanášení elementů při držení tlačítka myši na místě
  • opravy chyb
    • odebrány šedé šmouhy, které zůstávaly po motion blur
    • opraveno blikání způsobené špatnou (žádnou ;) ) synchronizací
    • opraveno blikání, které způsobovalo motion blur, když počet cyklů byl nižší než FPS
  • a další...

Shrnutí: tato verze by měla především vylepši výkon, zamezit blikání při velké zátěži a doladit věci okolo přenosu tepla.

 
Odpovědět  +4 4. července 19:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 39. Zobrazit vše