6 Commits

Author SHA1 Message Date
dvtzr c2348fa700 part 3 of shiro's route wahoo
next up are the endings. whoo
2025-01-07 15:00:26 +02:00
dvtzr 35c7ef0cb6 shiro route part 2
second part is done! probably will come back to it to see if we can bridge it in a nicer way. tomorrow we end this route (hopefully)
2025-01-06 22:53:58 +02:00
dvtzr 8f545fb137 got the hang of this
okay Now it should be working fine!! i think!! i hope!!
all of the new UI updates, aswell as the script being done up to aoi's route and a bit further (with the start to shiro's route). wahoo
2025-01-05 18:41:37 +02:00
dvtzr 061f9d23c1 test
god i hope this works
2025-01-05 18:33:23 +02:00
tomchukk 4b53ac3001 Update README.md 2024-10-07 13:01:05 +03:00
tomchukk 1f7a40d8a8 updated file url 2024-10-06 22:44:56 +03:00
135 changed files with 3152 additions and 108 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}
+8
View File
@@ -0,0 +1,8 @@
{
"ExpandedNodes": [
"",
"\\game"
],
"SelectedNode": "\\game\\shiro_route.rpy",
"PreviewInSolutionExplorer": false
}
Binary file not shown.
BIN
View File
Binary file not shown.
Vendored
+1 -1
View File
@@ -19,7 +19,7 @@ pipeline {
} }
stage('Download Latest release') { stage('Download Latest release') {
steps { steps {
sh 'curl -LO https://git.ruff.co.il/amai.ig/otomai/releases/latest/download/Otomai-web.zip' sh 'curl -LO https://git.ruff.co.il/amai.ig/otomai/releases/download/latest/Otomai-web.zip'
} }
} }
stage('Create web game directory') { stage('Create web game directory') {
+62 -2
View File
@@ -1,2 +1,62 @@
# otomai # Otomai: A Harucon Easter Egg ✨
short amai visual novel
**Otomai** is a short Ren'Py visual novel game created as a secret easter egg for the Israeli anime and sci-fi convention, Harucon.
This project is a single-player, narrative-driven experience built with the Ren'Py visual novel engine.
**Note:** This game is currently intended as a web experience running inside a Docker container.
### Features
* Short, interactive visual novel experience
* Original story and characters
* A fun (hopefully!) surprise for Harucon attendees
### Getting Started
**Prerequisites**
**For building the game from source**
* Python3 installed
* Ren'Py installed
**For running the game inside a docker container**
* Docker installed on your system. You can find installation instructions for your OS on the official Docker website: [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/)
**Building the Game**
1. Clone this repository:
```
git clone https://git.ruff.co.il/amai.ig/otomai.git
```
2. Using Ren'Py, load the source and build for your desired platform.
3. Run the final compiled result.
**Running the game inside a docker container**
1. Pull the docker image:
```
docker pull git.ruff.co.il/amai.ig/otomai:latest
```
2. Start a container with port 5000 exposed:
```
docker run git.ruff.co.il/amai.ig/otomai:latest -p 5000:80 --name otomai
```
3. Open your web browser and navigate to `http://docker-host:5000`
This should launch the Otomai game within your web browser.
### Contributing
We welcome contributions to this project! If you'd like to help with development, please open a pull request on this repository.
### License
This project is licensed under the MIT License. See the `LICENSE` file for details.
### Contact
For any questions or feedback, feel free to open an issue on this repository.
We hope you enjoy your Otomai experience!
+3 -7
View File
@@ -2,13 +2,9 @@
errors listed below, and try again. errors listed below, and try again.
File "game/script.rpy", line 44: choice menuitem expects a non-empty block. File "game/shiro_route.rpy", line 221: expected simple expression
"אני גם אוהב פפסי": stop music fadeout
^
File "game/script.rpy", line 47: Line is indented, but the preceding jump statement statement does not expect a block. Please check this line's indentation. You may have forgotten a colon (:).
"אני לא אוהב פפסי":
^ ^
Ren'Py Version: Ren'Py 8.3.2.24090902 Ren'Py Version: Ren'Py 8.3.2.24090902
Sat Sep 28 09:59:45 2024 Mon Jan 6 22:20:57 2025
+135
View File
@@ -0,0 +1,135 @@
{
"files.exclude": {
"**/*.rpyc": true,
"**/*.rpa": true,
"**/*.rpymc": true,
"**/cache/": true
},
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "renpy.meta.plain",
"settings": {
"fontStyle": ""
}
},
{
"scope": "renpy.meta.i",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "renpy.meta.b",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": [
"renpy.meta.u",
"renpy.meta.a"
],
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "renpy.meta.s",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b",
"settings": {
"fontStyle": "italic bold"
}
},
{
"scope": "renpy.meta.i renpy.meta.u",
"settings": {
"fontStyle": "italic underline"
}
},
{
"scope": "renpy.meta.i renpy.meta.s",
"settings": {
"fontStyle": "italic strikethrough"
}
},
{
"scope": "renpy.meta.b renpy.meta.u",
"settings": {
"fontStyle": "bold underline"
}
},
{
"scope": "renpy.meta.b renpy.meta.s",
"settings": {
"fontStyle": "bold strikethrough"
}
},
{
"scope": "renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "underline strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u",
"settings": {
"fontStyle": "italic bold underline"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.s",
"settings": {
"fontStyle": "italic bold strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "italic underline strikethrough"
}
},
{
"scope": "renpy.meta.b renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "bold underline strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "italic bold underline strikethrough"
}
},
{
"scope": "renpy.meta.color.text",
"settings": {
"foreground": "#ffffff"
}
},
{
"scope": "renpy.meta.color.#fff",
"settings": {
"foreground": "#fff"
}
},
{
"scope": "renpy.meta.color.#ff0000",
"settings": {
"foreground": "#ff0000"
}
},
{
"scope": "renpy.meta.color.#5e9cff",
"settings": {
"foreground": "#5e9cff"
}
}
]
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1065
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+11
View File
@@ -0,0 +1,11 @@
renpy.ftl
renpy.geometry renpy.texture
renpy.alpha renpy.geometry renpy.texture
renpy.matrixcolor renpy.texture
renpy.geometry renpy.solid
renpy.dissolve renpy.dissolve
+16 -16
View File
@@ -30,7 +30,7 @@ define config.check_conflicting_properties = True
define gui.accent_color = '#990000' define gui.accent_color = '#990000'
## The color used for a text button when it is neither selected nor hovered. ## The color used for a text button when it is neither selected nor hovered.
define gui.idle_color = '#707070' define gui.idle_color = '#ffffff'
## The small color is used for small text, which needs to be brighter/darker to ## The small color is used for small text, which needs to be brighter/darker to
## achieve the same effect. ## achieve the same effect.
@@ -52,20 +52,20 @@ define gui.muted_color = '#c16666'
define gui.hover_muted_color = '#d69999' define gui.hover_muted_color = '#d69999'
## The colors used for dialogue and menu choice text. ## The colors used for dialogue and menu choice text.
define gui.text_color = '#404040' define gui.text_color = '#ffffff'
define gui.interface_text_color = '#404040' define gui.interface_text_color = '#404040'
## Fonts and Font Sizes ######################################################## ## Fonts and Font Sizes ########################################################
## The font used for in-game text. ## The font used for in-game text.
define gui.text_font = "DejaVuSans.ttf" define gui.text_font = "Assistant-Regular.ttf"
## The font used for character names. ## The font used for character names.
define gui.name_text_font = "DejaVuSans.ttf" define gui.name_text_font = "Rubik-ExtraBold.ttf"
## The font used for out-of-game text. ## The font used for out-of-game text.
define gui.interface_text_font = "DejaVuSans.ttf" define gui.interface_text_font = "Assistant-Bold.ttf"
## The size of normal dialogue text. ## The size of normal dialogue text.
define gui.text_size = 33 define gui.text_size = 33
@@ -108,12 +108,12 @@ define gui.textbox_yalign = 1.0
## The placement of the speaking character's name, relative to the textbox. ## The placement of the speaking character's name, relative to the textbox.
## These can be a whole number of pixels from the left or top, or 0.5 to center. ## These can be a whole number of pixels from the left or top, or 0.5 to center.
define gui.name_xpos = 360 define gui.name_xpos = 0.82
define gui.name_ypos = 0 define gui.name_ypos = 0
## The horizontal alignment of the character's name. This can be 0.0 for left- ## The horizontal alignment of the character's name. This can be 0.0 for left-
## aligned, 0.5 for centered, and 1.0 for right-aligned. ## aligned, 0.5 for centered, and 1.0 for right-aligned.
define gui.name_xalign = 0.0 define gui.name_xalign = 1.0
## The width, height, and borders of the box containing the character's name, or ## The width, height, and borders of the box containing the character's name, or
## None to automatically size it. ## None to automatically size it.
@@ -132,7 +132,7 @@ define gui.namebox_tile = False
## The placement of dialogue relative to the textbox. These can be a whole ## The placement of dialogue relative to the textbox. These can be a whole
## number of pixels relative to the left or top side of the textbox, or 0.5 to ## number of pixels relative to the left or top side of the textbox, or 0.5 to
## center. ## center.
define gui.dialogue_xpos = 402 define gui.dialogue_xpos = 0.75
define gui.dialogue_ypos = 75 define gui.dialogue_ypos = 75
## The maximum width of dialogue text, in pixels. ## The maximum width of dialogue text, in pixels.
@@ -140,7 +140,7 @@ define gui.dialogue_width = 1116
## The horizontal alignment of the dialogue text. This can be 0.0 for left- ## The horizontal alignment of the dialogue text. This can be 0.0 for left-
## aligned, 0.5 for centered, and 1.0 for right-aligned. ## aligned, 0.5 for centered, and 1.0 for right-aligned.
define gui.dialogue_text_xalign = 0.0 define gui.dialogue_text_xalign = 1.0
## Buttons ##################################################################### ## Buttons #####################################################################
@@ -173,7 +173,7 @@ define gui.button_text_insensitive_color = gui.insensitive_color
## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 ## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0
## is right). ## is right).
define gui.button_text_xalign = 0.0 define gui.button_text_xalign = 1.0
## These variables override settings for different kinds of buttons. Please see ## These variables override settings for different kinds of buttons. Please see
@@ -250,7 +250,7 @@ define gui.file_slot_rows = 2
## The position of the left side of the navigation buttons, relative to the left ## The position of the left side of the navigation buttons, relative to the left
## side of the screen. ## side of the screen.
define gui.navigation_xpos = 60 define gui.navigation_xpos = 200
## The vertical position of the skip indicator. ## The vertical position of the skip indicator.
define gui.skip_ypos = 15 define gui.skip_ypos = 15
@@ -389,17 +389,17 @@ define gui.nvl_name_width = 225
define gui.nvl_name_xalign = 1.0 define gui.nvl_name_xalign = 1.0
## The position, width, and alignment of the dialogue text. ## The position, width, and alignment of the dialogue text.
define gui.nvl_text_xpos = 675 define gui.nvl_text_xpos = 1400
define gui.nvl_text_ypos = 12 define gui.nvl_text_ypos = 40
define gui.nvl_text_width = 885 define gui.nvl_text_width = 1000
define gui.nvl_text_xalign = 0.0 define gui.nvl_text_xalign = 1.0
## The position, width, and alignment of nvl_thought text (the text said by the ## The position, width, and alignment of nvl_thought text (the text said by the
## nvl_narrator character.) ## nvl_narrator character.)
define gui.nvl_thought_xpos = 360 define gui.nvl_thought_xpos = 360
define gui.nvl_thought_ypos = 0 define gui.nvl_thought_ypos = 0
define gui.nvl_thought_width = 1170 define gui.nvl_thought_width = 1170
define gui.nvl_thought_xalign = 0.0 define gui.nvl_thought_xalign = 1.0
## The position of nvl menu_buttons. ## The position of nvl menu_buttons.
define gui.nvl_button_xpos = 675 define gui.nvl_button_xpos = 675
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Some files were not shown because too many files have changed in this diff Show More