Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
5d18d79
adding base game layer scripts
kdavidmitchell Nov 15, 2021
4f5efe6
specced out combat loop with comments
kdavidmitchell Nov 15, 2021
c130a25
Merge branch 'main' of github.com:kdavidmitchell/oops-all-bards into dev
kdavidmitchell Nov 15, 2021
6ba05fb
adding rough UI for demo and logic
kdavidmitchell Nov 16, 2021
65f4023
adding comments to the csm
kdavidmitchell Nov 17, 2021
673d2df
adding combatqueueable interface and inheritable classes
kdavidmitchell Nov 30, 2021
80c4165
adding scene changes
kdavidmitchell Nov 30, 2021
30c3348
making ui elements responsive
kdavidmitchell Dec 16, 2021
05c6c29
refactoring combat logic
kdavidmitchell Dec 16, 2021
a3dbdb1
beginnings of an event system
kdavidmitchell Dec 16, 2021
f656e61
adding methods for DemoManager to check queue on event
kdavidmitchell Dec 16, 2021
b274048
changes to combat scene UI and adding player input capability
kdavidmitchell Jan 4, 2022
b7ec6af
adding targeting system and PlayerAction queueables
kdavidmitchell Jan 6, 2022
aaccdc8
adding enemy ai behavior
kdavidmitchell Jan 7, 2022
31f1812
adding capability to check health of combatants, and win/loss
kdavidmitchell Jan 13, 2022
a7a351b
scene changes
kdavidmitchell Jan 13, 2022
d4776e3
fixing ui issues w/ resetting combat queue
kdavidmitchell Jan 14, 2022
09626fe
adding win/loss scenes -- basic loop complete
kdavidmitchell Jan 19, 2022
c9f6ad0
experimental unity upgrade
kdavidmitchell Jan 27, 2022
1fbdc9c
added new interior assets and created gig background scene
kdavidmitchell Feb 8, 2022
cde6158
refining scene
kdavidmitchell Feb 9, 2022
6b64a4f
adding character model packages to project; models added to combat scene
kdavidmitchell Feb 15, 2022
b2ef7a7
scene changes
kdavidmitchell Feb 15, 2022
38de31f
adding portraits as stand-ins; combat scene UI hooked up and running …
kdavidmitchell Feb 15, 2022
cce64bb
combat ui changes
kdavidmitchell Feb 22, 2022
8d72540
adding custom UI assets and updating combat scene
kdavidmitchell Feb 22, 2022
a49b0c4
continued combat UI clean up
kdavidmitchell Mar 1, 2022
fe3467b
fixed disappearing health and flourish bars
kdavidmitchell Mar 17, 2022
ae2877a
adding temp abl code
kdavidmitchell Mar 18, 2022
9426e5d
live changes
kdavidmitchell Mar 18, 2022
5af8632
live changes
kdavidmitchell Mar 18, 2022
0b0c46d
Adding implementation for 2-way communication between ABL and Unity (#6)
kdavidmitchell May 6, 2022
528351f
adding title and character creation screen
kdavidmitchell May 10, 2022
ecf7228
fixing indexing for model viewer
kdavidmitchell May 11, 2022
1d6bff1
continued work on character creation screen
kdavidmitchell May 11, 2022
e484b36
cleaning up json errors
kdavidmitchell May 11, 2022
07070d7
finished character creation and created a whole bunch of new errors
kdavidmitchell May 12, 2022
213a337
fixing all the errors
kdavidmitchell May 12, 2022
b6c49ef
working data serialization/persistence for player object
kdavidmitchell May 12, 2022
ba65a6a
adding tavern work from cam
kdavidmitchell May 12, 2022
cf6c9b7
linking character creation to tavern demo scene
kdavidmitchell May 12, 2022
bd8f978
lighting changes from meeting
kdavidmitchell May 16, 2022
b161826
adding player controller and camera follow scripts
kdavidmitchell May 16, 2022
0d1d797
player spawn in tavern now working with camera and collisions
kdavidmitchell May 17, 2022
9600899
adding animations and controllers for player and npcs
kdavidmitchell May 17, 2022
7a3002b
adding dialogue data structures and json file
kdavidmitchell May 17, 2022
fbba77c
dialogue system in place, need to clean up
kdavidmitchell May 18, 2022
788fb2d
cleaned up dialogue, transition to combat scene
kdavidmitchell May 18, 2022
809cef9
adding reward screen and loop back to tavern
kdavidmitchell May 20, 2022
7bce6dc
adding new music for tavern scene
kdavidmitchell May 20, 2022
2a892a7
removing unnecessary func
kdavidmitchell May 20, 2022
9f07435
fixing bugs before merging tavern work
kdavidmitchell May 23, 2022
1bbe27f
fixing lighting
kdavidmitchell May 23, 2022
de6f1d2
adding rough cut of quest system for gameplay experience help, cleani…
kdavidmitchell May 23, 2022
d656e79
adding ability to create help messages and adding navmesh movement sc…
kdavidmitchell May 24, 2022
09ec635
adding party ui
kdavidmitchell May 25, 2022
04d9fa2
working party screen
kdavidmitchell May 25, 2022
ca05185
cleaning up combat
kdavidmitchell May 25, 2022
a3cccdc
adding noncombat abl behaviors
kdavidmitchell May 25, 2022
02bfc89
adding context specific quip system
kdavidmitchell May 27, 2022
0c9a44c
adding resolution to the fight
kdavidmitchell May 27, 2022
eba3c23
cleaning up null references
kdavidmitchell May 27, 2022
0461489
fixing floating quest marker not following npc bug
kdavidmitchell May 31, 2022
32b1f42
fixing quinton resolution bug
kdavidmitchell May 31, 2022
9d88ad7
fixing downed NPCs trying to protect allies bug
kdavidmitchell May 31, 2022
6417fe2
fix warning
kdavidmitchell Jun 2, 2022
688fcb6
adding new portraits and title screen art
kdavidmitchell Jun 2, 2022
45d9069
more menu fixes
kdavidmitchell Jun 2, 2022
ed8875f
adding player default portrait, and making portraits appear in combat
kdavidmitchell Jun 2, 2022
88f1887
removing visual combat queue for now
kdavidmitchell Jun 2, 2022
36e9ea2
adding animator overrides for injured/happy quinton
kdavidmitchell Jun 2, 2022
ad06b40
final touches to demo
kdavidmitchell Jun 2, 2022
26f8b92
adding executables for abl and game
kdavidmitchell Jun 3, 2022
59be053
modifying .gitignore to accept build, adding build
kdavidmitchell Jun 3, 2022
e79b8e7
fixing conflicts
kdavidmitchell Jun 3, 2022
7fff9fc
redoing deletions
kdavidmitchell Jun 3, 2022
330b5b2
Sarah updates (#17)
kdavidmitchell Jan 31, 2023
0bbe6bf
Camera and Back button update
BlotofInk Jan 31, 2023
eee4038
Added InfluenceAllyTurn queueable
bhillig Feb 3, 2023
7e3d83c
Added done boolean at the end of execute()
bhillig Feb 3, 2023
2710c7f
Replaced AllyTurn with InfluenceAllyTurn for testing
bhillig Feb 3, 2023
0e41d75
Replaced InfluenceAllyTurn with AllyTurn
bhillig Feb 3, 2023
9de1f4b
Influence added to player's abilities list during character creation
endawghae Feb 7, 2023
dfdf3d1
Influence button functionality added but it's ugly
endawghae Feb 7, 2023
8c66387
Comments
endawghae Feb 7, 2023
e628661
Merge pull request #21 from singlab/Henry-Updates
endawghae Feb 7, 2023
d16a884
Refactored UI code and added support for portrait animations and effects
endawghae Feb 10, 2023
8ffa28a
Sarah updates new (#25)
BlotofInk Feb 14, 2023
d5da5a0
fixing doubled render call
kdavidmitchell Feb 14, 2023
f78dc8e
adding music and sfx from previous PR
kdavidmitchell Feb 27, 2023
56de967
Decoupled DemoManager and fixed the bug where Quinton wouldn't talk t…
bhillig Feb 17, 2023
a485104
Fixed a bug that caused the party to not be displayed
bhillig Feb 17, 2023
cc99647
Added ability to generate random enemies
bhillig Feb 23, 2023
1a273ff
Dialogue Animations (#29)
endawghae Feb 27, 2023
df3d765
importing shaders
ReinKameryu Feb 27, 2023
4d5155f
urp upgrade
ReinKameryu Feb 27, 2023
0a955a2
the visual effects
ReinKameryu Jun 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
oops-all-bards/[Ll]ibrary/
oops-all-bards/[Tt]emp/
oops-all-bards/[Oo]bj/
oops-all-bards/[Bb]uild/
oops-all-bards/[Bb]uilds/
oops-all-bards/[Ll]ogs/
oops-all-bards/[Mm]emoryCaptures/
oops-all-bards/Build/oops-all-bards_BurstDebugInformation_DoNotShip

# Asset meta data should only be ignored when the corresponding asset is also ignored
!/oops-all-bards/[Aa]ssets/**/*.meta
Expand Down Expand Up @@ -61,3 +61,6 @@ crashlytics-build.properties
# .vscode
oops-all-bards/.vscode

# abl folder
abl/bin/

15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
## About ##

<p align="center">
<img src="" alt="Main Menu render"
height="75%" width="75%">
<img src="img/TitleCard.png" alt="Main Menu render"
height="50%" width="50%">
</p>

Broadly, this repository is a code base for an ongoing research project concerned with game agent believability, artificial intelligence for game NPCs, and leveraging heterogeneous AI systems to open new game design spaces. Within the ```abl``` folder of this repository, you will find source code for a Java proxy server that runs a game agent using [ABL](http://www.cs.cmu.edu/~michaelm/publications/AI-IE2002.pdf). Within the ```oops-all-bards``` folder, you will find source code for a game demo built with Unity that is intended to be run alongside the Java proxy server to showcase the game agent.
Expand All @@ -26,15 +26,22 @@ We intend our system in its current state to be used to improve the believabilit

The scenarios we chose for this particular demo are slices of two central aspects of the game. The player is first introduced to an exploratory scenario, wherein they can engage in dialogue with NPCs like Quinton, learn about the kinds of characters they are, improve relationships with them, and generally learn more about the world of the game. After some conversation, the player will be introduced to a combat scenario alongside Quinton, during which they can experience how Quinton will react and respond to various things that the player may, or may not, do. Of particular note is what may happen when Quinton, a character with the Vengeful trait, asks for help in combat and the player does not do anything to aid him.

## Guided Video Tour of the Oops! All Bards Demo ##

For anyone interested in seeing a guided tour of the demo as played by one of the collaborators on this project, please navigate [here](https://drive.google.com/file/d/1FPHsX0k_L6ojVAS33owDis2Sa2_megJC/view?usp=sharing).

## Installation ##

You can get a copy of this project up and running in the following ways,
depending on how you wish to use it:

### Game Only ###

If you only wish to play the demo, please download/clone this repository
and find the executable file in the ```Build``` folder within the ```oops-all-bards``` directory. There will be executables for Windows and MacOS.
If you only wish to play the demo, please follow these steps:

1. Download the appropriate .zip file from the [Releases](https://github.com/singlab/oops-all-bards/releases/tag/aiide-2022-demo) hub according to your OS. There are executables for Windows and macOS. Each .zip file contains two directories: ```server``` and ```game```.
2. For Windows users: Run ```run_oab.bat``` from within the ```server``` directory. For macOS users: You may execute the ```run_oab.sh``` shell script from the command line. This will ultimately open both a command line prompt and an ABL debugger; you can click the "Continue" button at the bottom of the ABL debugger and forget about it.
3. Run the appropriate game executable from within the ```game``` directory. For Windows users, this will be ```oops-all-bards.exe```. For macOS users, this will be ```OAB.app```. You should now be able to play the demo in the intended way.

### Build Project from Source ###

Expand Down
Binary file added abl/.DS_Store
Binary file not shown.
12 changes: 8 additions & 4 deletions abl/.classpath
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="hoj.jar"/>
<classpathentry exported="true" kind="lib" path="abl.jar" sourcepath="abl-sources.zip"/>
<classpathentry exported="true" kind="lib" path="json-simple-1.1.1.jar"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="lib/abl.jar"/>
<classpathentry exported="true" kind="lib" path="lib/hoj.jar"/>
<classpathentry exported="true" kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
1 change: 0 additions & 1 deletion abl/.gitignore

This file was deleted.

Binary file added abl/build/oab.jar
Binary file not shown.
1 change: 1 addition & 0 deletions abl/build/run_oab.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
java -jar oab.jar
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file added abl/src/.DS_Store
Binary file not shown.
3 changes: 1 addition & 2 deletions abl/src/abl/agents/GameAgent.abl
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ behaving_entity GameAgent {
mental_act {
System.out.println("Updating ally wme in dictionary.");
dict.addCharacter(newAllyWME.getID(), newAllyWME);
System.out.println(dict.getCharacter(newAllyWME.getID()));
}
}

Expand All @@ -54,7 +53,7 @@ behaving_entity GameAgent {
id = allyAgent.getID();
}

with (persistent) subgoal lookForQuip(id);
with (persistent, priority 1) subgoal lookForQuip(id);
with (persistent) subgoal manageCombat(id);
// with (persistent) subgoal manageNoncombat(allyAgent);
}
Expand Down
1 change: 0 additions & 1 deletion abl/src/abl/generated/GameAgent_MentalStepExecute.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ static public void mentalExecute0(int __$stepID, final Object[] __$behaviorFrame
// lookForAllyAgent_1Step5
System.out.println("Updating ally wme in dictionary.");
((GameAgent)__$thisEntity).dict.addCharacter(((AllyWME)__$behaviorFrame[0]).getID() , ((AllyWME)__$behaviorFrame[0]));
System.out.println(((GameAgent)__$thisEntity).dict.getCharacter(((AllyWME)__$behaviorFrame[0]).getID()));
break;
}
case 8: {
Expand Down
2 changes: 1 addition & 1 deletion abl/src/abl/generated/GameAgent_StepFactories.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ static public Step stepFactory0(int __$stepID, Behavior __$behaviorParent, final
}
case 9: {
// manageAllyAgent_1Step2
return new GoalStepDebug(9, __$stepFactory, __$behaviorParent, true, false, false, false, false, false, (short)-32768, (short)0, false, null, GameAgent.__$argumentExecute0_rfield, null, null, null, "lookForQuip(int)", null, (short)0);
return new GoalStepDebug(9, __$stepFactory, __$behaviorParent, true, false, false, false, false, false, (short)1, (short)0, false, null, GameAgent.__$argumentExecute0_rfield, null, null, null, "lookForQuip(int)", null, (short)0);
}
case 10: {
// manageAllyAgent_1Step3
Expand Down
9 changes: 0 additions & 9 deletions abl/src/server/TCPServer.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
package server;

import java.lang.reflect.Field;
import server.Message;
import wm.WME;

import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.util.Date;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import abl.generated.GameAgent;
import abl.runtime.BehavingEntity;
import abl.wmes.AllyWME;
/**
* This program demonstrates a simple TCP/IP socket server.
Expand Down
Binary file added img/TitleCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added oops-all-bards/.DS_Store
Binary file not shown.
6 changes: 6 additions & 0 deletions oops-all-bards/.vsconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Workload.ManagedGame"
]
}
Binary file added oops-all-bards/Assets/.DS_Store
Binary file not shown.
Binary file added oops-all-bards/Assets/2D/.DS_Store
Binary file not shown.
101 changes: 101 additions & 0 deletions oops-all-bards/Assets/Animations/DialogueUI.controller
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DialogueUI
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 5693297092924658559}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1102 &1279097750961017462
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: dialogueBoxClose
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 0ac309d780a239849b2e9babdf11ef4a, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &5693297092924658559
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 8889875982254074158}
m_Position: {x: 230, y: 60, z: 0}
- serializedVersion: 1
m_State: {fileID: 1279097750961017462}
m_Position: {x: 265, y: 125, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 8889875982254074158}
--- !u!1102 &8889875982254074158
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: dialogueBox
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: d035605e21c79a74d8164d395f102b9a, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
8 changes: 8 additions & 0 deletions oops-all-bards/Assets/Animations/DialogueUI.controller.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading