An existential western RPG about semi-conscious GPT agents. Written in a 3d engine from scratch targeting Wasm/Webgl and Desktop https://playgpt.io
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Cameron Murphy Reikes c4ec2c3862 Correctly fade, bill description 9 months ago
.vscode Successfully compile under Wall, better drama story, ability to holster shotgun, other improvements 11 months ago
art Refer to rooms by unique id, stored in blend. More assets 10 months ago
assets Correctly fade, bill description 9 months ago
marketing_page Somewhat working payment system without saving 1 year ago
server Get building on web, save more issues with interacting with far away players, ensure judgement is harsher. On server warn clearer when no cors 10 months ago
thirdparty Get macos arm64 shadergen working 9 months ago
.gitattributes Exporter -> separate file, fix codegen, don't ignore .pn files 1 year ago
.gitignore Remove is_player check, add player npc kind 9 months ago
10x.10x Add Visual Studio solution file and use it with 10x 11 months ago
CMakeLists.txt Convert to 4 space indentation to try out CLion 1 year ago
LICENSE Initial commit 1 year ago
README.md Add important note about exporting from blender 10 months ago
Session.vim Fix y coord sorting popping on extreme y coords 1 year ago
assets.mdesk Editable description, player spawns in correct roomid, player suicide/retry button 9 months ago
blender_export.bat Add automated blender_export.bat script 11 months ago
buff.h Deserialize bones in one chunk, slice iter macro 1 year ago
build_and_run_remedy.bat Passthrough command line arguments to subscripts 11 months ago
build_and_run_web.bat Create build_and_run_web.bat 11 months ago
build_desktop_debug.bat Accept command line arguments in build_web_common 11 months ago
build_web_common.bat WebGL2; update sokol; Web MSAA; AA Outlines 11 months ago
build_web_debug.bat Passthrough command line arguments to subscripts 11 months ago
build_web_release.bat Passthrough command line arguments to subscripts 11 months ago
character_info.h Factor out duplicated information across action and context in memory 9 months ago
codegen.c Partially botch refactor to make NPCs authored dynamically at runtime 10 months ago
credits.txt Add credits for posterity 1 year ago
do_ctags.bat Fix ctags in main file 1 year ago
level design document.png Initialize git lfs, 3d asset exporting and loading, debug rendering 1 year ago
main.c Correctly fade, bill description 9 months ago
main.sln Add Visual Studio solution file and use it with 10x 11 months ago
make_training_prompt.txt Buff iteration by index macro 1 year ago
makeprompt.h Editable description, player spawns in correct roomid, player suicide/retry button 9 months ago
maketraining.c Rename 1 year ago
openai_cmdline_notes.txt Conver training to metadesk, add metadata. Writing 1 year ago
playgippity.png Initialize git lfs, 3d asset exporting and loading, debug rendering 1 year ago
playground.bat Formatting, initial datastructure sketch of new character engine 9 months ago
playground.c Editable description, player spawns in correct roomid, player suicide/retry button 9 months ago
playground.mdesk Formatting, initial datastructure sketch of new character engine 9 months ago
playground.txt Some kind of tokenizing, accidentally started creating a taxonomy instead of solving the problem 9 months ago
profiling.h stb_ds ubsan, keyboard shortcuts for speak/give item, custom assert 1 year ago
quad.glsl Add 3d outline rendering, combine 3d and 2d shaders 1 year ago
run_codegen.bat Partially botch refactor to make NPCs authored dynamically at runtime 10 months ago
ser.h Format 10 months ago
simpletest.c Web target builds, but fails on arena issue. Web debugging is broken 11 months ago
threedee.glsl Post processing tunables; Remove webgl1 matrix inverse 11 months ago
todo.txt AABB metrics, player spawntpoint and spawn player when playing. More todo. 9 months ago
tooling.ahk Successful conversation, VScode tooling, drama document, loading anim when thinking 1 year ago
tuning.h Game is finally running without crashing again 10 months ago
unix_run_codegen.sh Get macos arm64 shadergen working 9 months ago
utility.h Saving and loading system for the gamestate while in devtools mode, constantly saved on mouse up 9 months ago
web_specific_shader_header.glsl Fix Shadow Texture Border Sampling on Web 1 year ago
web_template.html Change engine title strings to "Dante's Cowboy" 11 months ago

README.md

Dante's Cowboy - Wishlist now on Steam!

A fantasy western RPG with an immersive and natural dynamic dialogue system powered by GPT.

Western Frontier

Important Building Steps and Contribution Notes

If you add new devtools functionality like a new keyboard button binding that prints stuff to help with debugging, or flycam features, or anything, MAKE SURE you add a description of that functionality and how to access it in the function make_devtools_help() so it's just clear what debugging tools there are. Document it please.

In order for exporting to work, the "exclude from view layer" tick to the left of the eyeball on each object has to be unticked, or else all animations will be frozen. @TODO fix this in the future

Every time you checkin/clone the project, make sure to call blender_export.bat at least once! This will auto-extract art\art.blend and run art\Exporter.py, thereby baking, validating, and exporting all the assets and the level.

When editing Exporter.py in either the blender editor, or in a text editor in the repo, you have to continually make sure blender's internal version of the script doesn't go out of date with the actual script on disk, by either saving consistently from blender to disk if you're editing from blender, or by reloading from disk in the blend file before each commit.

Be very cautious about committing a change to any large asset files, i.e the art.blend and png files. Every time you do so, even if you change one little thing like moving the player somewhere, you copy the entire file in git lfs, ballooning the storage usage of the git project on the remote. So just try to minimize edits to those big files.

You must clone with git lfs is, and download git lfs files in this repository. If you don't know what that is, google it

Open art.blend, go to the scripting tab and hit the play button run the script and export all the 3d assets. Then, make sure that when you build, you also build and run the codegen so that said assets and other files are copied and imported. For debug builds on windows, that's call build_desktop_debug.bat codegen, the codegen argument to the build script causing it to run codegen

To enable codegen error messages, change @echo off to @echo on in run_codegen.bat

Debugging in the web

To get this working, you're going to need to follow flooh's answer linked here, and copy pasted for redundancy here:

It should definitely work on Vanilla Chrome, but setting everything up can be a bit finicky:

- install the Debugging extension: https://chrome.google.com/webstore/detail/cc%20%20-devtools-support-dwa/pdcpmagijalfljmkmjngeonclgbbannb
- in the Dev Tools settings, search for 'WebAssembly Debugging' and check that box
- compile your code with '-O0 -g' (no optimization, and debug info enabled'
- IMPORTANT: in the Chrome debugger, there's a 'Filesystem' tab on the left side which is very easy to miss. Here you need to navigate to your project directory and allow Chrome to access that area of your filesystem.

(I think/hope these are all steps)

When you load your application you should see something like this on the Dev Tools console:

[C/C++ DevTools Support (DWARF)] Loading debug symbols for http://localhost:8080/cube-sapp.wasm...
[C/C++ DevTools Support (DWARF)] Loaded debug symbols for http://localhost:8080/cube-sapp.wasm, found 91 source file(s)

...and if everything works it should look roughly like this in the debugger: