Zdrojové kódy v Javě z
Programming Game AI by Example
O knize
Programming Game AI by Example je kniha napsaná Matem Bucklandem.
(September 30, 2004 | ISBN-10: 1556220782 | ISBN-13: 978-1556220784 | Edition: 1)
Je to dobrá kniha o umělé inteligenci ve hrác. Velmi dorbrá pro začátečníky.
Ale její příklady jsou naspané v C++, používají Windowsové
knihovny a jsou napsané pro Visual Studio 2006 a VS 2008. Bylo pro mne
docela komplikované přinutit je překompilovat a spustit ve VS 2010 (Express edition).
Musel jsem opravit nějaké chyby ve zdrojácích, nastavit VS 2010 (nastavit cesty
ke knihovnám a zdrojovým kódům), stáhnout a zkompilovat novou verzi luabind atd.
Nakonec se mi to podařilo nastavit – ale je to
nemožné v Linuxu!
A protože preferuji Linux před Windows (žádné překvapení, že?) a Javu před C++, rozhodl jsem se přepsat všechny příklady z C++ do Javy. Další důvod byl, že mi to pomohlo procvičit si Javu (v programování v Javě jsem nováček) a také mi to pomohlo lépe porozumět všem příkladům v knize.
Nyní jsem se rozhodl poskytnout mé zdrojové kódy celému světu. Doufám, že to pomůže ostatním lidem bojujícím s C++ zdrojáky, nebo linuxovým (či MAC) uživatelům. Také doufám, že se stanu slavným po celém světě, tak nezapomeňte likovat mou facebook stránku (způsob, jak můžete říct děkuji :-).
Ukázka
Aktualizace
-
09.08.2014
Opravil jsem chyby v metodách PlayerBase.InHotRegion() (v projektu SimpleSoccer – tahle chyba je i v originálním zdrojovém kódu) a SteeringBehavior.Hide(). Na chyby mě upozornili Nakasya Masuta a Shane Feehily. -
19.05.2014
Opraven bug ve třídách Smoother.java a SmootherV2.java, kde se místo kopie m_ZeroValue do proměnné sum přiřazoval pouze odkaz na m_ZeroValue. Na bug mě upozornil Nakasya Masuta. -
28.04.2013
Raven je venku! Toto je poslední aktualizace, ledaže by mi někdo poslal zprávu o bugu. -
21.04.2013
Opravil jsem mnoho budgů ve hře Raven a už je téměř připravená k publikování! -
14.04.2013
Opravil jsem metoduclamp
a všechny její použití ve šech kapitolách. -
07.04.2013
Opravil jsem metodyPopLuaNumber
,PopLuaString
aPopLuaBool
v tříděLuaHelperFunctions
ve všech projektech v Kapitole 6.
Dobrá zpráva! Zapracoval jsem na kapitole 7, a nyní jsem schopen ji spustit. Ale stále není funkční jak by měla, proto ještě není hotova ke zveřejnění. -
16.01.2013
Opravil jsem v projektu WestwoodMessaging vGoHomeAndSleepTilRested.java
theEnter
metodu – uzavírací závorka proif
klauzuli musí zahrnovatmessage dispatch
. Také jsem vylepšilCruderTime.GetCurrentTime
takže produkuje výsledek podobný C++ kódum. (Obojí díky A. Rick Andersonovi, který mi poslal tyto patche). -
26.10.2012
Vytvořil jsem stránku Jak nastavit Visual Studio (Express Edition). -
06.09.2012
Opravil jsem tříduTelegram
v kapitole 4 Simple Soccer. HashCode nevracel vždy tu samou hodnotu pro dva stejné telegramy.
Kapitoly
-
- Všechny kapitoly (2.8 MiB, ZIP)
-
Toto zahrnuje všechny kapitoly vypsané níže (jako projekty NetBeans).
Nemusíte stahovat už nic jiného.
-
- Kapitola 2 State Machines (203 KiB, ZIP)
-
První projekt v knize Přepsal jsem pouze ty části zdrojového kódu,
které jsem musel. V každé další kapitole je přepsáné víc a víc z adresáře
common.
Mezi jednotlivými "common" balíčky v dalších kapitolách můžou být
další rozdíly (čím novější, tím lepší).
Snažil jsem se psát kód podobný originálnímu zdrojovému kódu v C++ jak to jen šlo. Proto jsem používal často "import static" a další divné programovací vzory, které nejsou zrovna „good Java practise“.
-
- Kapitola 3 Steering Behaviors (86 KiB, ZIP)
- Kód pro samostatný a skupinový pohyb zahrnující chování hledej, uteč, doraž, pronásleduj, toulej se, vyhni se, obcházení překážek, zdí atd.
-
- Kapitola 4 Simple Soccer (113 KiB, ZIP)
- Implementace jednoduché, ale zábavné umělé inteligence pro týmovou sportovní hru (fotbal).
-
- Kapitola 5 Pathfinder (98 KiB, ZIP)
- Kódy pro graph node class, graph edge class, graph class, depth first search, breadth first search, edge relaxation, shortest path trees, Dijkstra's search and A*.
-
- Kapitola 6 Scripting Source (2.2 MiB, ZIP)
-
Tato kapitola je o používání lua s C a C++ zdrojovými soubory.
Popisuje lua a luabind knihovny. Ale v Javě existují jiné projekty
podporující lua jazyk.
Já se rozhodl použít LuaJ.
Podařilo se mi přepsat všechny příklady bez potřeby změny originálních lua skriptů, ale musel jsem napsat pomocný lua skript, který imituje luabind chování.
-
- Chapter 7 – 10 Raven (1.1 MiB, ZIP)
- Poslední tři kapitoly shrnují všechny dosažené znalosti a přidávají mnoho dalšího (například path planer, goal arbitration nebo fuzzy logiku).
-
- Python kód pro Blender 3D.
- Bonus: Přepsaný AI kód z Programming Game AI By Example z kapitoly 3 'How to Create Autonomously Moving Game Agents' do Pythonu (Blender Game Engine) od Nakasya Masuta.
Přihlašte se
Přihlašte se k odběru novinek o tomto projektu:
Reference
- Kupte si Programming Game AI by Example na Amazonu, nebo si přečtěte recenze zákazníků.
- Originální zdrojové kódy v C++ ke stažení (in Samples Materials section).
- Mat Buckland stránka o knize