Coder Social home page Coder Social logo

inkpot's Introduction

Inkpot

Inkpot - An container for Ink within the Unreal Engine developed by The Chinese Room.

This is a plugin for Unreal Engine 5.3 or later.
This is version 0.1.20 of the plugin.

Inkpot is a wrapper for the wonderful narrative scripting language Ink developed by Inkle Studios.

Requirements

Inkpot works with version 5.3 of Unreal.
Inkpot includes a C++ port of Ink-engine-runtime version 20, which can be found in the InkPlusPlus module.
As Inkpot compiles the Ink source directly on import, it should be compatible with any Ink editor version as long as you only use features from Ink version 20.

.Net framework 3.1

InkleCate requires the .net framework 3.1 which you can download from here.
https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-3.1.32-windows-x64-installer
(Without this you will not be able to import Ink source)

Visual Studio 2022

This plugin is distributed as source code which needs compiling.
You will need to install Visual Studio 2022.
https://visualstudio.microsoft.com/vs/

Installing the plugin

Copy to the plugins folder of your project.

[Project Root Directory]/Plugins/Inkpot/

or add via git as a submodule.

For an example of how this plugin should sit in your project see the InkpotDemo.
https://github.com/The-Chinese-Room/InkpotDemo

Module Structure

Inkpot is made from three modules.

InkPlusPlus

InkPlusPlus is the name of the module that contains the C++ port of the Ink Engine Runtime which can be found here
https://github.com/inkle/ink/tree/master/ink-engine-runtime

When porting the code from C# to C++ we came to the conclusion that we should keep the source as close to the original C# as possible to make updates easier.
That said we took the code in the summer of 2021 and have not had a need to update as it works for our purposes.
The Ink version we are running is therefore behind that of the offical Ink release being at Inkversion 20.

Inkpot

A set of wrapper classes for InkPlusPlus to simplify Blueprint coding.
Manages the lifetime of the Ink story and provides the interface for Ink variable setting, getting and change notification.

InkpotEditor

This is the unreal editor facing part of Ink pot.
This manages the defintion of data types in Unreal for inkpot and the compilation of new Ink scripts as they are added to the project.
It also contains the unit tests for InkPlusPlus.

Other folders

There area couple of supporting folders that make up the Inkpot distribution.

TestInkSource

All the Unit tests for Ink.
Currently 168 tests.

Third Party

This contains a copy of InkleCate and is used by the script importer to compile the scripts.

What we did not do

You will note that 2 of the tests fail, these are the JSON serialisation tests & we simply did not need to implement them in our usage case.
We have also not implemented custom function definition.

Thanks to

Inkle
for creating Ink. We've used this for much more than narrative.

UnrealInk
for giving us a good basis for creating InkPlusPlus.

Colin, Seb & Canute at TCR
for the brilliant job in porting the Ink Engine Runtime to C++, along with the editor asset handling, unit tests and Unreal integration, most of the work here in fact.

inkpot's People

Contributors

tcr-nick avatar nightingalegregor avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.