OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 22:42

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 13 ] 
Autor Zpráva
 Předmět příspěvku: Hrátky s vlakem
PříspěvekNapsal: 22.05.2018, 22:29 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Trochu jsem se nudil a vyrobil jsem 51. scénu do hry VLAK (heslo: ocomp).

Příloha:
ocomp.png
ocomp.png [ 9.33 KiB | Zobrazeno 9048 krát ]


Pokud by měl někdo chuť si vyrobit nějakou svou vybroušenou scénu, tak je to vcelku jednoduchá záležitost:

1) zdroják je tady: https://github.com/oldcompcz/vlak
2) na konci souboru SCENY.ASM se vytvoří nová scéna - jak na to je snadno pochopitelné z předchozích příkladů :-)
3) v souboru VLAK.ASM je třeba
a) na řádku 6 upravit číslo počtu scén
b) ke konci soubrou - řádek 1733 - přidat heslo pro novou scénu

*) soubor VLAK.ASM je vhodné editovat v DOSu (windowsové editory zmrší některé speciální znaky v soubrou)
**) kompilaci (viz README v projektu) je třeba provést v MS DOSu (v DOSBOXu nefunguje dobře cpoy /b a nepřipojí tak správně data k výsledné binárce)

Pokud by se sešlo více scén, tak bychom mohli udělat malou soutěž o nejlepší scénu :-)


Přílohy:
VLAK.zip [12.03 KiB]
550 krát

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 23.05.2018, 10:46 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
berk píše:
je třeba provést v MS DOSu (v DOSBOXu nefunguje dobře cpoy /b a nepřipojí tak správně data k výsledné binárce)
Len poznamka na okraj:
copy /b file1 + file2 na zlepenie dvoch binariek mi vzdy fungovalo dobre, skusane v msdos, win98, winXP, win7.
Nevidim dovod preco by v dosboxe neslo, skor si myslim ze to bude nejaky omyl ktoreho pricina lezi niekde inde.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 23.05.2018, 16:27 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 994
Bydliště: Praha
Has thanked: 63 times
Been thanked: 375 times
Busy píše:
berk píše:
je třeba provést v MS DOSu (v DOSBOXu nefunguje dobře cpoy /b a nepřipojí tak správně data k výsledné binárce)
Len poznamka na okraj:
copy /b file1 + file2 na zlepenie dvoch binariek mi vzdy fungovalo dobre, skusane v msdos, win98, winXP, win7.
Nevidim dovod preco by v dosboxe neslo, skor si myslim ze to bude nejaky omyl ktoreho pricina lezi niekde inde.


Třeba autoři FreeDOSu zrovna udělali chybu v jejich implementaci příkazu COPY. To nelze vyloučit. Odpověď by přineslo porovnání výstupů z Windows a FreeDOSu.
A jestli shromáždíte dost nových obrazovek, vytvoříme z nich třeba speciální edici hry TRAIN pro 8bitové počítače Atari :-)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 23.05.2018, 16:32 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
V DOSBoxu/FreeDOSu některé věci fungují trošku jinak. Například rouru trochu nedotáhli do konce, a nejde udělat tohle:
Kód:
echo "print sqr(3^2+4^2)" | gwbasic


Jinak v DOSBoxu doporučuji frameskip=1 a cycles=max.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 23.05.2018, 17:19 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Busy píše:
berk píše:
je třeba provést v MS DOSu (v DOSBOXu nefunguje dobře cpoy /b a nepřipojí tak správně data k výsledné binárce)
Len poznamka na okraj:
copy /b file1 + file2 na zlepenie dvoch binariek mi vzdy fungovalo dobre, skusane v msdos, win98, winXP, win7.
Nevidim dovod preco by v dosboxe neslo, skor si myslim ze to bude nejaky omyl ktoreho pricina lezi niekde inde.


Moc jsem to před tím nezkoumal, ale vyprovokoval si mě k akci :-) Jsou tam 2 problémy:

1) DosBox narozdíl od MSDOSU neakceptuje filename<space>+<space>filename. Bylo nutné mezery smazat
2) DosBox v následujícím případě na druhém řádku file result nejprve vyprázdní a pak připojí file02 k prázdnému result

copy /b file01 result
copy /b result+file02 result

Buildící baťáky jsem opravil a už to buildí i pod DosBoxem :-)

Pro info:
https://github.com/oldcompcz/vlak/commi ... e53d5d2d14

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 16:41 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Teoretická úvaha: Ve svém archivu jsem narazil na program, kterým jsem kdysi zkoušel nalézt řešení scén Vlaku přes brutal force (tj. zkouší kroky ve všech možných směrech). S nadějí že by třeba některé scény mohly mít jednodušší či zajímavější řešení. Tehdy jsem to vzdal, protože program dokázal vyřešit jen jednodušší scény, ale u složitějších řešení uvázl na přílišné složitosti, nebyly vyřešitelné v reálném čase. Ani teď jsem nedokázal program vylepšit. Tak nevím jestli se nemýlím, vážně to už spadá do oblastí neřešitelných v reálném čase? Myslel jsem že mnoho variant cest vypadne neprůchodností, ale jak je vidět, zůstává stále příliš mnoho variant možných cest. A nedají se využít zjednodušení jako nalezení nejkratší cesty či řešení jen části problému nebo metoda Monte Carlo, vždy by se tím zjednodušením mohlo přijít o možné řešení.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 18:45 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Člověk to dokáže vyřešit relativně snadno.
Je otázka zda hledat přesný algoritmus, nebo zda by bylo lepší zkusit natrénovat nějakou neuronovou síť.

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 18:48 
Offline
Kecálek

Registrován: 03.11.2016, 08:49
Příspěvky: 149
Has thanked: 47 times
Been thanked: 25 times
Ad téma. Google trénuje svoji AI na Montezuma Revenge. http://www.digitaljournal.com/tech-and- ... cle/524278

_________________
Atari 130XE/XC12/Robotron, Atari 65XE(320kB), Atari 1040STE, GBA


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 20:01 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Mám obavu, že tady neuronová síť asi nepomůže. Nestačilo by ji učit procházet menší oblasti, protože není jednoznačný výsledek který se očekává - ty oblasti je potřeba projet různě, někdy sbírat vozíky, jindy je objet. Větší šance by byla, kdyby se mohla učit celou plochu jako celek - ale na to by muselo být k dispozici velká kvanta scén spolu s jejich řešením, což je nereálné. V tomto případě se neuronová síť nemůže učit sama od sebe, protože je nereálně náročné generovat úkoly a jejich řešení.

Tak asi nic. Stejně to byla jen úvaha. Nebylo by rozumné se tím zabývat v praxi, protože i kdyby se vytvořil automatický generátor scén (jejichž průchodnost by bylo nutné automaticky testovat), tak takto generované scény by stejně byly pro hráče nezajímavé.

Ale přece jen to s tou neuronovou sítí stojí ještě za úvahu, zda by se tam nedala nějak napasovat, dobrý podnět k zamyšlení.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 21:50 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 994
Bydliště: Praha
Has thanked: 63 times
Been thanked: 375 times
Jestli jsem to dobře pochopil, tak ten algoritmus je vlastně prostý backtracking.
Zkusil bych se zamyslet, zda by se nedal zjistit stav "úroveň už jistě nelze dokončit" ještě dříve než dojde k nárazu do zdi nebo do vagonků. Tím by se mohla eliminovat určitá část stavového prostoru.
A je v algoritmu nějaká ochrana proti nekonečnému ježdění dokola?

Hezké je, že na webu jsou informace o různých Snake solverech (na Vlak samozřejmě nelze použít).

Tak kdo opatří Train pro Atari nějakým "Train robotem?"


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 19.06.2018, 22:22 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Je to nejjednodušší zkoušení všech možných směrů, simulace možného pohybu vlaku v přímém směru. Nekonečné opakování je ošetřené jednak omezením max. počtu kroků a jednak tím, že každé políčko smí projet jen v omezeném počtu.

Asi by se to dalo řešit trochu inteligentněji tak, že se plocha rozdělí na oblasti s co nejmenším počtem okrajových průchozích políček a pak se zmapuje vztah mezi průchozími políčky - pro každou možnou cestu se stanoví vstupní políčko, výstupní políčko, povolená délka vlaku a o kolik vzroste délka vlaku. Při výskytu více cest se stejnými parametry se použije kratší cesta. A pak už jen zkombinovat seznamy cest tak aby vycházely, na to by možná metoda síly už mohla stačit. .. ale také asi nic moc řešení, po každém změně oblasti by se musely aktualizovat seznamy cest.

Mimochodem nevím jestli je známé, že ve Windows verzi Vlaku jsou makra pro řešení scény - když se stiskne F1 tak program přehraje řešení scény. Nebo v úvodní obrazovce přehraje řešení náhodně zvolené scény.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 20.06.2018, 08:00 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Podle metod používaných u Snake solverů se zdá že by i tady mohlo stát za pokus použít konvoluční neuronovou síť s genetickým učením.

Na neuronových sítích je jedna velká nepříjemnost - zpravidla se používá Python, což je jednak šíleně nemožný a nepraktický jazyk (fakt dodnes nechápu, proč to ti šílenci používají) a jednak ty knihovny jsou stylem "knihovna X používá knihovnu Y a ta používá knihovnu Z...", takže je až nemožný úkol to všechno zprovoznit např. pod Windows. Existují sice i knihovny pro C++, ale buď se jedná o úplně nejzákladnější síť (často špatně napsanou) nebo je to zas naopak tak propletená obecná knihovna, že se ani nedá použít bez roku studia.

Pro základní síť jsem si vytvořil knihovny v C++ která by měla být snadno použitelná, ale u vyšších typů sítí mám zatím problém správně vyčíst z Pythonu funkčnost, abych to přepsal do C++. (resp. převést to navíc do praktičtějších způsobů použití)

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Hrátky s vlakem
PříspěvekNapsal: 20.06.2018, 15:57 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Python je BASIC dneška, proto ho lamy cpou všude. Prolog nebo Lisp už dneska málokdo pochopí ;-)

Ale bez nějaké heuristiky bude i neuronová síť pomalá, leda že bys do toho zapřáhnul Google nebo něco podobného. Tohle je příliš podobné problému obchodního cestujícího, ještě s řadou komplikací navíc, protože Vlak je mnohem komplexnější svět než těch pár silnic a měst.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 13 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz