Presentation 20110918 after effect

Preview:

DESCRIPTION

First release of the master defense presentation file, this edition is designed to be play off PowerPoint or dumped HTML with transitional effects.

Citation preview

Dynamic State Based AI Decision Framework

Presenter:Kuanhung Chen, MS in Software Engineering

Committee Members:Dr. Junhua Ding, Dr. Masao Kishore, Dr. Ronnie Smith

East Carolina University Fall 2011 Master’s Presentation

The Need for Better AI

Source: Penny Arcade - One Plausible Scenario

The Need for Better AI

Problem Statement

“In the field of video gaming, graphics is approaching visually apex. A few more pixels and polygons no longer provide any meaningful substance to improve the quality of gaming, however the AI of the games we play is no better than those we have played a decade ago.

I would like to propose a dynamic AI framework that allows end-users to experience the same game in potentially endlessly different ways by simply downloading user-generated AI plug-ins. This way, users can finally program/modify their own characters' AI algorithms and make games more difficult without games cheat.”

Project Functionalities

Dynamic AI Algorithm

Dynamic AI Algorithm

Data Layer – Class Diagram

Presentation Layer – Simplified Class Diagram (Semi-Manual Engine)

Presentation Layer – Character State

AI Layer – Action Engine

Data Link – Character Association

Graphical Layer - Stock Character

Scaffolding System Testing

Project Site – Log-In

Project Site – Stub Upload

Project Site – Stub Download

Project Site – Project Management

Character Selection

AI Stub Selection

Rounds Selection

Battle

Result Display

Question and Answer

Presenter:Kuanhung Chen, MS in Software Engineering

Committee Members:Dr. Junhua Ding, Dr. Masao Kishore, Dr. Ronnie Smith

East Carolina University Fall 2011 Master’s Presentation

Appendix Index Simplified User Project Interface Test Plan Simplified Class Diagram (Manual Engine) Class Diagram – Elaborated Action Diagram Animation Engine Animation Engine – Elaboration Simplified Character State Diagram Interface Design Camera Control – Design Camera Control – Camera Movement Camera Control – User Interface Audio Manager Implementation AI Stub Verification C# Reflection Invoke C# Reflection Invoke Differences AI Stub Injection AI Stub Injection Interface AI Algorithm Utility AI Design Strategies Data Link – Action Driver AI Stub Implementation – Template

Simplified User Project Interface

Test Plan

Simplified Class Diagram (Manual Engine)

Class D

iagram –

Elaborated

Action Diagram

Animation Engine

Animation Engine – Elaboration

Simplified Character State Diagram

Interface Design

Camera Control – Design

Camera Control – Camera Movement

Camera Control – User Interface

Audio Manager Implementation

AI Stub Verification

Name Verification: Existence and non-empty of input [full file name] Whether the referenced file exist

Name Validation: Whether the [full file name] fits the naming scheme:

[[NameSpace]].[ClassName].[Method].DLL Breaking down the name by delimiter of “.” Make sure there are at least four parts Make sure that the last part is “DLL”

No empty space exists in file name

C# Reflection Invoke

Class Reference:

Type classType = assembly.GetType(dllObject.TitleClass);MethodInfo method = classType.GetMethod(dllObject.MethodName);

Instantiate an Object of the Referenced Type:

object classInstant = classType.InvokeMember (null,BindingFlags.DeclaredOnly |BindingFlags.Public | BindingFlags.NonPublic |BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);

Invoke Member in .NET:

public object InvokeMember (string memberName, BindingFlags invokeAttr,

Binder binder, object objectInstant, object[] arguements)

C# Reflection Invoke Differences

Dynamic Method Invoke in .NET:

object returnedValue = method.Invoke(classInstant, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance |BindingFlags.InvokeMethod, null, parameters, new CultureInfo(0x0009, false));

Invoke Member in Mono:

public object MethodBase.Invoke (object objectInstant,

BindingFlags invokeAttr, Binder binder, object[] arguments,

CultureInfo languageEncode)

AI Stub Injection

AI Stub Injection Interface

AI Algorithm Utility

Get All Characters Get Allies Get Enemies Get Characters by Team Get Character by ID Get Character by Query Total HP Move To Get Random Character Line of Sight

AI Design Strategies State-Based Statistical Analysis

Buffer copies of game state, run trend analysis to predict opponent action

Table Query More familiar to programmers

Team-Based Shared Memory Establish correlation to prevent redundant actions

Nested AI Stub Re-use AI Adaptor to pass on request to child adaptors for

specialized requests Target Buffer Strategy

Use previously determined and buffered actions to cut down on CPU time

Memory Based Analysis Dump accumulated data out to external file to be reused

later.

Data Link – Action Driver

AI Stub Implementation – Template

Dynamic State Based AI Decision Framework

The End