Coder Social home page Coder Social logo

amiantos / gamebookengine Goto Github PK

View Code? Open in Web Editor NEW
82.0 82.0 5.0 12.8 MB

Gamebook Engine is an open source iOS app for creating and playing gamebooks, a type of interactive fiction where the player gets to make decisions that influence the story.

License: Mozilla Public License 2.0

Swift 100.00%
adventure choice-based-game choosable-adventure gamebook gamebooks interactive-fiction ios swift

gamebookengine's Introduction

Hello there 👋

Welcome to my GitHub profile. You will find numerous things here for your enjoyment. But first, internalize:

People have been thinking too long that art is a privilege of the museums & the rich. Art is not business! It does not belong to banks & fancy investors. Art is food. You can't eat it but it feeds you. Art has to be cheap & available to everybody. Art soothes pain! Art wakes up sleepers! Art fights against war & stupdity! Art sings halleluja! Art is for kitchens! Art is like good bread! Art is like green trees! Art is like white clouds in blue sky! ART IS CHEAP!

Apps

  • Aislingeach - iOS image generation client for the AI Horde
  • Inneal - iOS chatbot client for the AI Horde
  • PiBar - Manage your Pi-hole(s) from your macOS menu bar
  • Gamebook Engine - Create and play interactive fiction on your iOS devices
  • dotBeat - Swatch Internet Time in your macOS menu bar

macOS Screensavers

  • Life Saver - Conway's Game of Life implemented as an artistic, abstract macOS screensaver and tvOS app
  • MultiClock - Displays the time (and nifty animations) using 24 clocks
  • Ealain - Infinite, forever changing abstract works of art, created using Stable Diffusion
  • Last Statement - It's like the "Word of the Day" screensaver, except it's the last statements of people executed by the State of Texas

Toys

  • Aeon Garden - An artificial life toy, kinda like an abstract fish tank that evolves over time

gamebookengine's People

Contributors

amiantos avatar rosierjolie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gamebookengine's Issues

Debug Screen / Generating Gamebooks

For testing purposes, a screen can be created for debugging purposes. The screen is going to be used to generate a random gamebook. The gamebook will have a lot of pages and routes in it.

Online Functionality

Might be possible to use AWS lambda functions, api gateway, and whatever their lightest nosql offering is, to create basic online functionality, allowing people to upload their gamebooks and others to download and play them.

Game List Empty State

Game list looks wonky if you have no gamebooks, which hopefully doesn't happen commonly but you never know...

Web Player

It would be cool if there was a web player interface where a user could submit a .gbook file, or a URL to a gbook file, and play it right in the browser. For people who want to share books but don't have iOS. Eventually the tool could allow "upload and get a share link" if we wanted?

Support Older iOS Versions (13 & 14)

Two of Gamebook Engine's more active beta testers are stuck on old devices running iOS 13 and 14. When I was making updates to the app, I added some SwiftUI screens and things that necessitated bumping the minimum supported iOS version. Was it worth it? I don't know. But I would like to support as many old versions of iOS as possible, so perhaps I can build in some #available checks or something to allow it to stay compatible with old versions of iOS.

Groundhog Day

Game kind of like "groundhog day" where the story loops several times, but each time through new information is learned which unlocks more decisions to progress the story.

Gamebook Analyzer

In my conception for the project originally, I felt there should be one last final feature that went in the readme, a "gamebook analyzer". My idea was that this analyzer would run through your gamebook, simulating every path it could take based on how your attributes were set up. So it'd run through every variation to ensure that all of your decisions are viewable and that you didn't accidentally create some impossible rule combinations for a regular player to achieve.

Maybe not actually that complicated to build out, just need a nice and tidy algorithm. And then deciding how to incorporate that data in the UI.

Mac Client

I think a Mac client would be really great.

However, a Mac client would necessitate #34 because otherwise... it would be very annoying. I mean, it's probably already annoying if you want to write on an iPad and an iPhone sometimes, so sync would be great.

Gamebook Library Cloud Backups

It would be nice if users could opt-in to storing their gamebook libraries securely in iCloud somehow. Maybe I can build something really simple like a mass export to a folder in iCloud. Or go all out and use CloudKit to store the Core Data DB in the cloud...? Maybe a little kooky but that would be the coolest.

It goes without saying it's important this cloud backup use iCloud for security and privacy purposes.

Can't change first page

You can't change the first page. I'm trying to in a game right now, to replace the starting page with an intro page, and, well, you can't. Should be a way to do that somehow.

Improve Gamebook Card Design

From Jozef in Discord:

At first glance, the sample gamebook doesn’t look like it is a gamebook. It looks more like an in-app guide/message. Maybe it could use a more visually distinct CTA so it looks more interactive?

I know the description says “check out this guide” but it seems like that would come with a button/link/icon to emphasize it more

Orphaned Page Deletion

When you create a new decision, a page is created automatically. If that decision needs to go to an existing page, it seems like an orphaned page gets left behind. It might be good to have a check that if any "pages to be orphaned" have the default page setup, and delete them automatically.

Community Discord

Should there be a community discord? Might be a good way for people to share stories and discuss the betas and so on.

iPad-specific Layout

The Problem

The current iPad layout is simply the iPhone layout with a little more room to breathe. Effective, but not top-notch.

Simulator Screen Shot - iPad Pro (12 9-inch) (2nd generation) - 2023-03-22 at 22 42 26
Simulator Screen Shot - iPad Pro (12 9-inch) (2nd generation) - 2023-03-22 at 22 43 08
Simulator Screen Shot - iPad Pro (12 9-inch) (2nd generation) - 2023-03-22 at 22 43 20

Possible Solution Idea

It would be cool, if when editing a book in the iPad version, you could have a side-by-side Split View with the page map and the page editor both open and sharing the screen. No need to go back and forth between the overview screen and the page screen.

I think that would be a great improvement for the iPad version...

Variable Organization

From a user:

do you think you will add a way to organise variables (like put them in folders for them or something)?

Chapter Support (or something)

From a user:

it would also be cool to separate a game into parts or chapters or something so the overview isnt so complicated for big games

Conditional Text / Page Data Model Changes / Image Support (?)

  • It would be really great to do conditional text on pages. I believe I've been reluctant to include it because I want to keep Gamebook Engine relatively simple, and believe that being constrained forces creativity and so on. But at the same time, it's annoying to have to create two different decisions that lead to two different pages. On the other hand, having to write two separate pages may inspire you creatively... I don't know!
  • If we were to consider conditional page content, I think a change to a block-based data model for pages would be good. For example...
{
    "page": {
        "uuid": "...",
        "type": "ending",
        "consequences": [],
        "decisions": [],
        "content": [
            {
                "uuid": "...",
                "type": "markdown",
                "content": "Start of page content...",
                "match_style": "match_all",
                "rules": []
            },
            {
                "uuid": "...",
                "type": "markdown",
                "content": "Some special content",
                "match_style": "match_all",
                "rules": [
                    {
                        "uuid": "...",
                        "attribute_uuid": "...",
                        "value": 1,
                        "type": "equal"
                    }
                ]
            },
            {
                "uuid": "...",
                "type": "markdown",
                "content": "...and the rest of the content",
                "rules": []
            }
        ]
    }
}

We can imagine other types of blocks... {"type": "image", "url": "https://..."} perhaps? (But obviously embedding images from the web isn't something that would actually work. Gamebooks with images would have to be distributed in a zip/container similar to Apple Work suite files... anyway...)

Player Rewinding

I didn't want Gamebook Engine's player to have rewind originally but it seems like it probably should have rewind because it would free up authors to create more false endings later in the story without possibly annoying the player. I think that's a good rationale for building a more robust player with rewinding.

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.