Top Banner
Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014
16

Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Jul 23, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Umělá inteligence

Transport Tycoon - OpenTTD

Připravil: Ing. Jiří Lýsek, Ph.D.

Verze: 27.12.2014

Page 2: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Program cvičení

• Zadání úkolu

• Ukázka práce s API

strana 2

Page 3: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

OpenTTD

• Simulátor vedení dopravní společnosti

• http://www.openttd.org

• Jazyk Squirrel

– API pro AI

– http://noai.openttd.org/api/trunk/

strana 3

Page 4: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

strana 4

Page 5: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Úkol

• Naprogramujte funkční AI pro

OpenTTD

– umí stavět dráhy (vlaky) pro přepravu

libovolného nákladu

– umí hrát na libovolné mapě

strana 5

Page 6: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

OpenTTD - AI

• AI nemá přístup k jiným možnostem

než lidský hráč

• Dokumenty\ OpenTTD\

content_download\ai\MyAI

– info.nut

– main.nut

strana 6

Page 7: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

info.nut

class MyAi extends AIInfo

{

function GetAuthor() { return "Jiri Lysek"; }

function GetName() { return "MyAi";}

function GetDescription() { return "Testovaci Ai pro OpenTTD"; }

function GetVersion() { return 1; }

function GetDate() { return "2014-10-20"; }

function CreateInstance() { return "MyAi"; }

function GetShortName() { return "MYAI"; } //4 znaky!!!

function GetAPIVersion() { return "1.1"; }

function GetSettings() {}

}

RegisterAI(MyAi());

strana 7

Page 8: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

main.nut

class MyAi extends AIController

{

vlastnost = null;

constructor() {

}

}

// hlavni metoda AI

function MyAi::Start() {

}

strana 8

Page 9: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Konzola ve hře

• spustí se klávesou ` (EN) nebo ; (CZ)

– startai MyAI

– stopai #cisloAI

– reloadai #cisloAI

• Je dobré otevřít i konzolu skriptů

strana 9

Page 10: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Logování

• Do konzoly skriptů

– AILog.Info("Text...");

• Přímo na plochu

– AISign.BuildSign(index, "text");

strana 10

Page 11: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Číslování polí

• pravý horní roh je index 0

– kokem mapy je offset 1 pole

– reálně je první pozice:

• 1 + AIMap.GetMapSizeX()

– pole směrem na:

• NW: index - AIMap.GetMapSizeX()

• SW: index + 1

• SE: index + AIMap.GetMapSizeX()

• NE: index - 1

strana 11

Page 12: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Stažení knihovny

• Bude se hodit knihovna:

– AyStar

• V menu hry tlačítko "stahovat

součásti"

strana 12

Page 13: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Ukázka funkčního algoritmu

• katureel

• A*

– h() heuristika - odhad ceny

– g() vzdálenost

• Přepnout směřování

strana 13

Page 14: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

strana 14

Page 15: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Cheat ve hře

• Ctrl+Alt+C

– můžete si přidat peníze pro vlastní

společnost

• např. pro úpravy terénu při testování AI

strana 15

Page 16: Umělá inteligencelysek/data/vui2/cvika.pdf · Umělá inteligence Transport Tycoon - OpenTTD Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 27.12.2014

Editor pro Squirrel - Eclipse

strana 16