diff --git a/README.md b/README.md index 6cc461d..af99fad 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # SquidTasks -[TOC] +Squid::Tasks is a header-only C++14 coroutine-based task library for games. -Overview of Squid::Tasks -======================== +Full API documentation can be found at https://westquote.github.io/SquidTasks/. -Squid::Tasks is a header-only library consisting of several top-level headers within the include directory. +## Overview of Squid::Tasks +Squid::Tasks consists of several top-level headers within the include directory. - ```Task.h``` - Task-handles and standard awaiters [REQUIRED] - ```TaskManager.h``` - Manager that runs and resumes a collection of tasks @@ -15,23 +15,17 @@ Squid::Tasks is a header-only library consisting of several top-level headers wi Sample projects can be found under the @c /samples directory. -Full API documentation can be found at https://westquote.github.io/SquidTasks/. - -License -======= +## License Squid::Tasks is developed by Tim Ambrogi Saxon and Elliott Mahler at Giant Squid Studios, and uses the [MIT License](https://en.wikipedia.org/wiki/MIT_License). -Integrating Squid::Tasks -======================== - +## Integrating Squid::Tasks The steps for integrating Squid::Tasks into your game depends on how your game is built: * [Integrating Squid::Tasks into an Unreal Engine 4 project](documentation/UE4IntegrationGuide.md) * [Integrating Squid::Tasks into an Unreal Engine 5 project](documentation/UE5IntegrationGuide.md) * [Integrating Squid::Tasks into a standalone Visual Studio project](documentation/StandaloneIntegrationGuide.md) -Configuring Squid::Tasks with TasksConfig.h -=========================================== +## Configuring Squid::Tasks with TasksConfig.h The Squid::Tasks library can be configured in a variety of important ways. This is done by enabling and disabling preprocessor values within the include/TasksConfig.h file: - **SQUID_ENABLE_TASK_DEBUG**: Enables Task debug callstack tracking and debug names via Task::GetDebugStack() and Task::GetDebugName() @@ -40,9 +34,7 @@ The Squid::Tasks library can be configured in a variety of important ways. This - **SQUID_USE_EXCEPTIONS**: Enables experimental (largely-untested) exception-handling, and replaces all asserts with runtime_error exceptions - **SQUID_ENABLE_GLOBAL_TIME**: Enables global time support (alleviating the need to specify a time stream for time-sensitive awaiters) **[see Appendix A for more details]** -An Example First Task -===================== - +## An Example First Task To get started using Squid::Tasks, the first step is to write and execute your first task from within your project. Many modern C++ game engines feature some sort of "actor" class - a game entity that exists within the scene and is updated each frame. Our example code assume this class exists, but the same principles will apply for projects that are written under a different paradigm. The first step is to identify an actor class that would benefit from coroutine support, such as an enemy actor. Here is an example Enemy class from a hypothetical 2D game: @@ -170,19 +162,14 @@ The next thing we see is the new ```co_await``` keyword. The ```co_await