-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create customization-user-stories.md #140
base: nickmaltbie/api-requirements
Are you sure you want to change the base?
Create customization-user-stories.md #140
Conversation
Created a rough draft of example customization user stories, I plan to update this document as development on the new API continues
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, this looks great, thanks for the submission and feedback!
Wrote up some notes and suggestions for the document.
Make sure to add the document to Documentation\manual\toc.yml
(or make a sub toc.yml for this folder). We may want to move this document to a sub folder like Documentation\manual\kcc-design\user-stories
and link to it form the main Documentation\manual\kcc-design\kcc-user-stories.md
file.
|
||
User Story: | ||
|
||
As a Customization User with an existing project, I’m interested in having my development studio switch to OpenKCC from a paid asset for the following reasons |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think as a requirement for linting the markdown flies with markdownlint
I have a constraint that lines shouldn't be more than 80 characters long. The markdown preview will auto join lines that don't have a newline between them.
You can install an extension in vscode to view the errors in style rules and make correcting them easier :)
Name: markdownlint
Id: DavidAnson.vscode-markdownlint
Description: Markdown linting and style checking for Visual Studio Code
Version: 0.49.0
Publisher: David Anson
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
|
||
While we are interested in the the higher level features of OpenKCC, as a pre-existing studio we already have our own high level code that enables us to reach a high velocity of output with our designers who are already accustomed to our tools | ||
|
||
Ideally, our game architecture programmer will be able to use the API of the KCCMovementEngine to make it compatible with our high level code which already handles things such as state switching, etc. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed, that's why it's important we disconnect the KCCMovementEngine from my existing state machine API!
|
||
Ideally, our game architecture programmer will be able to use the API of the KCCMovementEngine to make it compatible with our high level code which already handles things such as state switching, etc. | ||
|
||
We could probably be convinced to let KCC handle things like gravity for us if the API were well defined and the customization was robust enough, but for the foreseeable future it’s best to think that we are glued to our custom state solution. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With this thought, maybe it's best we have a default behaviour defined with a flag that allows the user to override it if they wish!
———————————————————————————————————————————————————————————————————————— | ||
|
||
**Example Use Case:** For example, a character controller like this is something we would hope to be able to achieve while handling states, input, and events ourselves: | ||
https://www.youtube.com/watch?v=ylG72jvo_2s&ab_channel=CaptainRipley |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Look at my other files if you want to see how to embed a youtube video with a thumbnail so the user can play them more easily!
|
||
**Example Use Case:** For example, a character controller like this is something we would hope to be able to achieve while handling states, input, and events ourselves: | ||
https://www.youtube.com/watch?v=ylG72jvo_2s&ab_channel=CaptainRipley | ||
- In fact I intend to start implementing a character controller with equivalent features, that way we could focus on porting it to Open KCC and developing the KCCMovementEngine API alongside it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That would be awesome, could we add it as a Sample for the OpenKCC repo or would it be using your custom authoring components you're writing on top of it?
|
||
Upon reflecting on my “Customization User” user stories, I think that the API that solves most of my immediate problems might look something like this, where I can set the velocity of the KCC Movement engine either directly or through a callback that the KCCMovementEngine provides. (Proper architecture withheld for brevity) | ||
|
||
```c# |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like the inclusion of example code here as a sample!
_movementEngine.PerformMove(); | ||
|
||
// Read Object State Post-Move to Update Client Velocity In Response to Being Groudned or Not | ||
var postMoveGroundedState = _movementEngine.GroundedState; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could have these returned as an argument of calling _movementEngine.PerformMove();
by returning a tuple (GroundedState, Collisions).
- I can then read that 0 value from the KCC Movement Engine, and re-apply it to my Client Side State | ||
- This basically keeps the client side velocity and the KCC Movement Engine state in sync, since with this state definition the user should have to Reaccelerate again once more after colliding, they shouldn’t instantly snap back to 15 meters per second if the wall were suddenly removed | ||
|
||
- Collision Phase Callbacks Extended |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this, right now we can also override the collision data and change how the player moves based on the result of collisions.
I want to change it so that pushing objects works like this as well! I'll add more notes in another PR.
@@ -0,0 +1,138 @@ | |||
**Expanding on ‘Customization User’ Scenarios** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use hierarchal titles for the document so they convert to HTML for easy reading!
like this:
# Title
info here
## Section 1
more info...
### Section 1.1
## Section 2
|
||
**Example #1: Planar 3D Platformer Character Controller** | ||
|
||
———————————————————————————————————————————————————————————————————————— |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We probably can remove these horizontal lines as the hierarchal titles make good divisions and add them in the final result anyway!
Created a rough draft of example customization user stories, I plan to update this document as development on the new API continues
Description
Created a markdown file to discuss user stories
How Has This Been Tested?
N/A