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

Java applet SimpleSoccer

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.
  • Raven
    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 metodu clamp a všechny její použití ve šech kapitolách.
  • 07.04.2013
    Opravil jsem metody PopLuaNumber, PopLuaString a PopLuaBool 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 v GoHomeAndSleepTilRested.java theEnter metodu – uzavírací závorka pro if klauzuli musí zahrnovat message dispatch. Také jsem vylepšil CruderTime.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řídu Telegram v kapitole 4 Simple Soccer. HashCode nevracel vždy tu samou hodnotu pro dva stejné telegramy.

Kapitoly

  1. 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.
  2. 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“.
  3. 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.
  4. Kapitola 4 Simple Soccer (113 KiB, ZIP)
    Implementace jednoduché, ale zábavné umělé inteligence pro týmovou sportovní hru (fotbal).
  5. 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*.
  6. 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í.
  7. 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).
  8. 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:

0 + 2 =
(antispam check)

Reference

Komentář Hlášení chyby
Created: 21.7.2012
Last updated: 19.5.2014
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..