{"id":36669811,"url":"https://github.com/kharism/hanashi","last_synced_at":"2026-01-12T10:39:13.313Z","repository":{"id":226571536,"uuid":"758889936","full_name":"kharism/hanashi","owner":"kharism","description":"Story telling tools for ebitengine. Still in development, there MIGHT be breaking changes. Should be relatively stable","archived":false,"fork":false,"pushed_at":"2025-12-10T23:39:54.000Z","size":4728,"stargazers_count":7,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-11T12:00:24.245Z","etag":null,"topics":["ebiten","ebitengine","game-development","visual-novel-engine"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kharism.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-17T11:33:49.000Z","updated_at":"2025-12-10T23:39:58.000Z","dependencies_parsed_at":"2024-03-23T22:22:32.042Z","dependency_job_id":"7e60e461-1415-4137-86e6-a28858ef7ddc","html_url":"https://github.com/kharism/hanashi","commit_stats":null,"previous_names":["kharism/hanashi"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kharism/hanashi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharism%2Fhanashi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharism%2Fhanashi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharism%2Fhanashi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharism%2Fhanashi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kharism","download_url":"https://codeload.github.com/kharism/hanashi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharism%2Fhanashi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebiten","ebitengine","game-development","visual-novel-engine"],"created_at":"2026-01-12T10:39:11.269Z","updated_at":"2026-01-12T10:39:13.282Z","avatar_url":"https://github.com/kharism.png","language":"Go","readme":"# HANASHI\n\nthis package provide some limited tools to convey story on ebitengine. As for now it only handle VN-like story telling with some way to handle branching options. Look up on sample directory for some example on how to use this package\n\n\n## Installation\n\n```\ngo get github.com/kharism/hanashi\n```\n\n## How to use\n\ncore.Scene is basically an object we use to store anything to do with the story we want to covey.\n```\nscene := core.NewScene()\n```\neach scene will have its own set of characters,event, and scene data. We basically put scene in our Update() and Draw(*ebiten.Image) function\n\n```\nfunc NewScene() *Scene {\n\treturn \u0026Scene{Events: []Event{}, Characters: []*Character{}, SceneData: map[string]any{}}\n}\n```\nCharacters is characters we want to move around in a scene. We need to register each characters first before we can use them to tell a dialogue or monologue.\n\n```\nscene.Characters = []*core.Character{\n\t\tcore.NewCharacter(\"sven\", \"../sample/chr/8009774b-2341-4b31-b63d-e172b525841e.png\", \u0026imgPool),\n\t}\n```\nAfter that we set events as if we write a screenplay\n```\nscene.Events = []core.Event{\n\t\tcore.NewBGChangeEventFromPath(\"../sample/bg/village.png\", core.MoveParam{Sx: 0, Sy: 0, Tx: 0, Ty: -200, Speed: 1}, \u0026imgPool, nil),\n\t\t\u0026core.ComplexEvent{Events: []core.Event{\n\t\t\tcore.NewCharacterAddEvent(\"sven\", \u0026core.MoveParam{-100, 200, 0, 200, 10}, \u0026core.ScaleParam{0.4, 0.4}),\n\t\t\t// core.NewCharacterAddShaderEvent(\"sven\", \u0026core.ShaderParam{ShaderName: core.DARKER_SHADER}),\n\t\t\tcore.NewDialogueEvent(\"sven\", \"(What a wonderful scenery)\", nil),\n\t\t}},\n\t\tcore.NewDialogueEvent(\"sven\", \"(I still have time before dusk to find a way home)\", nil),\n\t}\n```\nafter that we execute the 1st event\n```\nscene.Events[0].Execute(scene)\n```\nSet background of the text and set layouter\n```\ntxtBgImage := ebiten.NewImage(768, 300)\ntxtBgImage.Fill(color.NRGBA{0, 0, 255, 255})\nscene.TxtBg = txtBgImage\nscene.SetLayouter(layouter)\n```\nafter that we set Done Callback\n```\nscene.Done = func() {\n\t\tos.Exit(0)\n\t}\n```\nThe full example of this example is in sample2 directory. Sample directory is for more complex example where we use multiple scene, have scene transition, and dialogue option\n\nthe sampletopdown is not the most efficient or robust example, please look up [testtopdown](https://github.com/kharism/testtopdown) for better example\n\n## Example of my game that uses Hanashi\n\n[RogueSolitaire](https://kharism.itch.io/roguesolitaire)\n\n[GrimoireGunner](https://kharism.itch.io/grimoiregunner)\n\n[Solo Dev.Ops](https://kharism.itch.io/solodevops)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharism%2Fhanashi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkharism%2Fhanashi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharism%2Fhanashi/lists"}