Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
josephkirk committed Jul 29, 2024
1 parent 2d40f58 commit 91db43e
Show file tree
Hide file tree
Showing 6 changed files with 254 additions and 2 deletions.
52 changes: 52 additions & 0 deletions doc/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: Open Interactive Cinematic
category: Planning
tags:
- index
pinned: true
status: WIP
---

# Open Interactive Cinematic

Developed with Unreal Engine 5.4

## Description

Open Interactive Cinematic Framework project aim to a flexible base framework where you can build interactive and branching cinematic game experience in modular manner using Unreal 5's Modular gameplay and Gameplay feature feature.

Branching narrative depend on inkle scripting is used as core then solution will be build around this for designer to help easily tweak the experience in order to enhance gameplay.

## Scope

Although the aim is to solve problem regard interaction cinematic, it also support linear narrative sequence workflow.
What constitute an interactive cinematic:

- Multiple choices narrative.
- Situational commenting.
- Pickup and inspection.
- Action sequence that change narrative. (QTE)
- Character interaction.

## Features

- Generate/update Level sequence from ink script.
- Workflow for localization.
- Binding audio with ink script narrative.
- Workflow for changing Level sequence base on choice.
- Workflow for trigger situational awareness commenting.

## Thirdparty plugin dependencies
https://github.com/JBenda/inkcpp

## Inspiration

[Swan song's procedurally generating level sequences from script](https://www.youtube.com/watch?v=CAgTjb_8GFo)

[Assassin's Creed Odyssey Proc gen dialogue](https://www.youtube.com/watch?v=DFM5zbekZ7c)

[Witcher 3's cinematic dialogue system](https://www.youtube.com/watch?v=chf3REzAjgI)

[Baldur's Gate 3 cinematic approach](https://www.youtube.com/watch?v=MdmY9Mt-vz8&t=1382s)

[Just Cause 4's animation and cinematic content workflows](https://www.youtube.com/watch?v=MQjCYQb_pFU)
32 changes: 30 additions & 2 deletions doc/Structure.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,37 @@
---
title: Project Structure
category: Planning
tags:
- architecture
- unreal 5
pinned: false
dir: ltr
status: wip
---

# Project structure


## Plugins

Plugins
- OIC_Core: Core functionality include gamemode and component
- OIC_Sample: Example of using OIC
- OIC_Pickup
- OIC_ChoiceNarrative
- OIC_ChoiceNarrative

## Modules
```
classDiagram
accTitle: Animal class diagram
accDescr: Animal parent class with Duck, Fish and Zebra subclasses
OIC_GameMode <|-- OIC_GameComponent
OIC_GameMode <|-- OIC_GameSequenceTrack
class OIC_GameMode{
}
class OIC_GameComponent{
}
class OIC_GameSequenceTrack{
+bool is_wild
+run()
}
```
7 changes: 7 additions & 0 deletions doc/Studies/GameFeatures.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Gameplay Feature
tags:
- study notes
- unreal 5
status: WIP
---
120 changes: 120 additions & 0 deletions doc/Studies/Ink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
title: Ink Scripting
tags:
- study notes
status: WIP
---

[ink - inkle's narrative scripting language (inklestudios.com)](https://www.inklestudios.com/ink/)

# Ink

A narrative scripting language for game

Ink is just pure written text with "markup" to make it interactive.

You can split up your ink file into smaller ones that are linked together.

As with any programming language, you can create custom variables, and perform mathematical calculations.

```ink
"What do you make of this?" she asked.
// Ink script can have comment like this
"I couldn't possibly comment," I replied.
/*
or a block comment like this
*/
TODO: You can write to do note like this, compiler will printout these note during compilation
```

## Markup Types

### Knots

Example:
```
=== london ===
=== london_in_flame ===
=== london_is_saved
```

Interactive narrative written with ink comprised of these "knots" section that hold pieces of content scenario.

Knot's can not have spaces in it.

Right triple equal signs is optional. Best leave out if the knot content no longer have divert part.

Within knots you can also have sub-sections called "stitches".

There's a harder-to-learn but easier-to-write system for writing intricate branches called "weave" that doesn't require you to name every section with its own header.


### Diverts

Example:
```
-> london
-> END // special syntax that tell ink that story is done. Fail to include this statement result in loose end warning error.
-> DONE // different way to mark story end.
```

In order to link "knots" together, ink use *divert* arrow markup. This tell the story to go to a different knot section.


### Choices

Example:
```
"Are you a knight, sir?"
+ [Nod curtly.] -> a_knight // bracket [] mean silent choice and not print.
+ I shake my head -> not_a_knight
// Content can also be embed with choice by writing it under the choices
+ [Nod curtly.]
Yes i am a proud knight of 7 kingdoms.
+ I shake my head
No, i am just a squire.
// Choice with * instead of + will never again once chosen. Recommended for repeated knot content
* This choice will not repeat -> next_content
```

### Conditional Content

Example:
```ink
{ catacombs:
It was darker here than the Paris catacombs.
}
// can also be expressed like this
+ {catacombs} [Tell her what you found] -> tell_her
// complex conditionals
+ {not catacombs} [Visit the catacombs] -> catacomb
{ catacombs and not pick_up_ring:
"So you didn't find it then?" she enquired.
+ [Apologise.] -> apologise
}
{ (catacombs or cross_river or sing_in_rain) and not buy_new_shoes:
My shoes were sodden from earlier in the day.
}
```

Conditional is expressed in curly braces bracket.

Conditional content can be written in a whole block within curly braces or express by itself next to a choice.
7 changes: 7 additions & 0 deletions doc/Studies/ModularGameplay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Modular Gameplay
tags:
- study notes
- unreal 5
status: WIP
---
38 changes: 38 additions & 0 deletions doc/Thought.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: Random Thought Q&A
status: INFLUX
---


## Goal of project ?


## Sample Project Idea

It is best to choose a scenario that can be loop forever with every section of time ( day/ week / month) can be different content

- School
- Work
- Space Exploring
- Fantasy Town folks
- Detective
- Police

Rick & Morty, Doraemon, Detective Conan is some best example of this

## Mind Maps
```
mindmap
root((Interactive<br/> Cinematic))
Linear<br/>Narrative
Object Inspection
Scene commenting
Prop pickup and inspection
Prop interact and commenting
Cutscene
Passive Event
Passive Dialogue
Branching<br/>Narrative
Action Choice Event Cutscene
Multiple Choice Dialogue
```

0 comments on commit 91db43e

Please sign in to comment.