README ΒΆ
π Raiment Studios monorepo
See the Raiment Studios guide or jump to a particular project below:
Projects
- Structure
- Raiment Studios - guidelines on this project and organization
- Galthea
- Snowfall - voxel-based adventure game
- Sea
- sea-board - a GitOps-based, Miro-like app
- sea-book - a hybrid book/wiki generator
- sea-db - a toy database
- sea-fps - a simple first-person shooter style game
- sea-lang - a toy programming language
- sea-platformer - a simple 2D platformer game
- sea-notepad - a text editor
- sea-os - a toy operating system
- sea-outline - a GitOps-based outliner like Workflowy or Dynalist
- sea-raytracer - a toy raytracer
- sea-todo - a simple todo app
- sea-zelda - simple original-Zelda-like game
- sea-jsx - app for quickly prototyping React Components
- sea-tsx - app for quickly prototyping React Components in TypeScript
- sea-jest - wrapper on Jest to avoid config file clutter
- Adventure - voxel-based, open-world adventure rpg
- Text Engine - toy text-based RPG
- Storytelling - computer-aided 'pen & paper' storytelling procedural rpg
- Graham's Quest - a simple 2D, tile-based implementation
- Snow Globe - a single-region, 'snow globe' voxel-based world
- Rivia - a 2.5D/3D voxel-based world
- Jaskier's Tale - a fully dynamic 3D voxel-based world
- Worldbuilding - open-content for the game world of Galthea
- Libraries
- Website
- raiment-studios.github.io - public website (view)
Technology / Architecture
The preferred technologies in the monorepo are Rust
, Go
, JavaScript
, and WASM
. Currently much of the code is being fleshed out in JavaScript for rapid prototyping and easy distribution via web-based examples. As the project matures, more extensive use of Rust and WASM would be preferred.
In general, the projects prefer simple, standardized tools and formats to in order bias towards broad familiarity and easier maintenance over minor efficiency gains from specialization.
See tools for more details.
Contributing
See the Raiment Studios guide for more information about contributing, the direction of the organization, and other information about the community.
Discussion in the forums is always welcome as well.
FAQ
π§ TODO
License
All code and content within this repository, unless specifically noted otherwise, is licensed under the MIT License.
MIT License
Copyright (c) 2022 Raiment Studios
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Unless stated explicitly otherwise, any contribution intentionally submitted for inclusion in this repository or otherwise to the project shall be licensed as stated above without any additional terms or conditions.
CHANGELOG
β new or improved functionality, ποΈ internal organization or code improvements, π οΈ defect fix, π£ publication or release, 𧬠for sandboxes or experiments, π documentation, guides, or tutorials. URL generator.
- βποΈπ οΈπ£π§¬π
2022
- Week 44: October 31, 2022
- TODO
- Week 43: October 24, 2022
- TODO
- Week 42: October 17, 2022
- TODO
- Week 41: October 10, 2022
- TODO
- Week 40: October 03, 2022
- TODO
- Week 39: September 26, 2022
- TODO
- Week 38: September 19, 2022
- TODO
- Week 37: September 12, 2022
- TODO
- Week 36: September 05, 2022
- TODO
- Week 35: August 29, 2022
- 𧬠Basic Go text-engine implementation
- π οΈ A few
sea-jsx
fixes - 𧬠A few marketing website experiments
- Week 34: August 22, 2022
- 𧬠Small improvements to storytelling project
- Week 33: August 15, 2022
- 𧬠Experiments with TinyGo and WASM (mixed success)
- β Better Markdown component
- β Improve Type component options
- β sea-engine basics on shader graph / noise-heightmap
- 𧬠voxel height map blendering
- Week 32: August 08, 2022
- β
idForString
tocore
- β
murmurHash
tocore
- β
Markdown
component toreact-ex
- β
MarkdownTOC
component toreact-ex
- 𧬠Work on
sea-engine
- β
- Week 31: August 01, 2022
- β
react-ex
Button, Drawer, Flex, Type improvements - β Added some Midjourney generated content
- β
- Week 30: July 25, 2022
- β Add concept art assets from DALL-E 2
- β Improve flexibility of
Flex
component - β Add
Panel
component - β Add
Type
component - β Add
fs.glob
tosea-jsx
- β Add
fs.stat
tosea-jsx
- Week 29: July 18, 2022
- β Add escapeRegEx to core
- 𧬠Experiment with Guidebook and React data updates
- Week 28: July 11, 2022
- β Add router to ReactEx
- 𧬠Add Sea User Guide
- Week 27: July 04, 2022
- 𧬠Experiment with Rust + WASM
- Week 26: June 27, 2022
- β Added cat card to engine examples
- Week 25
- β
sea-jsx
now watches file references (in addition to source) - β Add
engine.world.generateRandomWalkablePosition()
- π οΈ Fix bug in
LookupTable.getDerived
- 𧬠Add first-person camera
- β Improve keyboard handling options in
Engine
- ποΈ Move pathfinding setup into
engine.world
for easier reuse - 𧬠Add Engine User Guide docs
- β
- Week 24
- β Add margin/padding CSS classes
- β Given
sequence
calls access to the engine context - β Add
place
toengine.actors
as rough placement method - β Add new sprites to asset collection
- 𧬠Add start menu experiment
- 𧬠Add basic "card" assets/views as an experiment
- Week 23
- ποΈ Move to
@raiment/core
tofast-mersenne-twister
for performance - π οΈ Simplify
sea-jsx
glob:
to return URLs only - β Add engine
goal
mixin - β Add
updateInternval
to Actor - π οΈ Fix shadows in DayNightLighting (dist was past frustum extents)
- β Improve Layers on
HeightMap
actor (can include lookup tables) - β Add components/mixins to
Actor
- ποΈ Miscellaneous small optimizations
- ποΈ Move to
- Week 22
- β
Cursor2D
to@raiment/core
- β
SimpleStats
to@raiment/core
- 𧬠Add experimental
fs
support tosea-jsx
for faster iteration - β Add
DataReader
to@raiment/core
- ποΈ Begin migration from
mesh()
toinitMesh()
method - β Add
VOXActor
- β Add
VoxelModelSG
for simple voxel mesh creation - β Add voxel models to website assets page
- β
- Week 21
- 𧬠Add
engine.journal
- 𧬠Add player movement example (click -> pathfind)
- 𧬠Add weather example (rain, snow)
- β Add
engine.opt
field for customization - 𧬠Add farming example
- ποΈ Rewrite path finding code for reusability
- β Add assets page to website
- β Allow
StateMachine
states to returnPromise
s - 𧬠Add pathfinding to examples
- 𧬠Add Forest to examples
- β Add
Map3D
,clamp
tocore
- β Add additional 32x32 sprites to the assets directory
- β Add
castShadow
flag - β Add
billboard
flag - β Add
pinToGroundHeight
flag - β Allow env variables in
glob:
syntax - ποΈ Create shared
assets/
directory - β Allow
async mesh()
Actor methods - β Added
VoxelSprite
,ImageGeometryCache
toengine
- β Add
loadImage
,getImagePixelData
to `engine - 𧬠Added the VoxelSprite demo
- 𧬠Experiment with
glob:
imports for external assets insea-jsx
- 𧬠Add
- Week 20
- ποΈ Clean up HeightMap actor for general reuse
- 𧬠Add dynamic terrain updating example
- β Incorporate StateMachine into
@raiment/engine
Actor handling - π οΈ Fix watch for
..
imports insea-jsx
- π οΈ Fix
clean
command insea-jsx
- β Add formatNumber to
@raiment/core
- β Add EngineRecorder (webm capture) component to
@raiment/engine
- β Add Flex component to
@raiment/react-ex
- β Add source map to
sea-jsx
- β Improve
sea-jsx
error handling - β Add simplex noise to
@raiment/core
- 𧬠Start
sea-jsx
v0.3.0 - β Update rcd to chdir to exact matches
- β Add seed, reset, shuffle to RNG
- π initial stab at some
@raiment/core
docs - 𧬠Experiment kicking off website project
- π Update tools page
- Week 19
- β Add option to bind object to
StateMachine
- β Add
RendererHUD
to@raiment/engine
for FPS - β Add
StateMachine
to@raiment/engine
(and example) - π οΈ Fix import resolution in
sea-jsx
for extensions-less files - β Add minification to
sea-jsx
published builds - β Add RNG.sign() to
@raiment/core
- β Add
FrameLoop
to@raiment/engine
- π οΈ Fix file watching for
sea-jsx
directory imports - β Add
sea-jsx
support to publish to GitHub Pages - 𧬠Add sandbox for GitHub repo file access via web
- β Add option to bind object to
- Week 18
- ποΈ Remove npm tgz packaging build and file:// references from projects
- β Add "remember last file" to sea-todo
- β
sea-jsx --build
now creates a single index.html with inlined JS - π£
sea-todo
publishes to todo.raiment.studio
- Week 17
- ποΈ Simplify publishing npm packages (using Codespace secrets)
- π Created
CHANGELOG.md
- π οΈ Fix automated builds to workaround package-lock.json not liking tgz changes
- ποΈ Organize / improve
sea-todo
database code - β Add
sea-jsx
watch/refresh on all referenced user files - β Add EventEmitter to
@raiment/core
- Prior to Week 17
- π¦