Skip to content

Commit e2e6905

Browse files
AnirudhG07Anirudh GuptaCopilot
authored
Improve Readme (#73)
* Improve Readme ok add emojis * Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Anirudh Gupta <anirudhgupta@Anirudhs-MacBook-Air.local> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent ecdf9fb commit e2e6905

File tree

2 files changed

+112
-16
lines changed

2 files changed

+112
-16
lines changed

README.md

Lines changed: 112 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,50 @@
1-
# deemak
1+
# 🎮 Deemak - Text Adventure Game Engine 🎲
22

3-
## How to run locally
3+
<div align="center">
4+
<img src="assets/deemak_logo.png" alt="Deemak logo" width="50%">
5+
</div>
6+
7+
> [!NOTE]
8+
> Deemak is still under development. It is yet not in a packageable state. You can try instructions below to run it locally and test it out.
9+
> For any issues, please create an issue. We would love your feedback and contributions.
10+
11+
Deemak is a Text Based Adventure Game Engine written in Rust. It is inspired by MIT's [Terminus](https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html). It is designed to be a simple, flexible, and extensible engine for creating text-based adventure games and enjoying them in Deemak GUI or Web.
12+
13+
<details>
14+
<summary>Why the name "Deemak"? 🪲</summary>
15+
16+
Well, we wanted to name it something related to `Term` for terminal, so we though of `Termite`. During the initial brainstorming, we thought Termite will be one game and its Game Engine will be called `Deemak` (which means Termite in Hindi). But then we got confused what `Termite` would even be? So we decided to keep the name `Deemak` for the Game Engine itself! Pretty fancy, right?
17+
18+
</details>
19+
20+
Deemak uses a `Sekai` (which means World in Japanese) file, of format `.deemak`(with proper metadata set) to load the game. Use deemak CLI to create and play your own games!
21+
22+
---
23+
24+
## ✨ Features
25+
26+
### 🎯 For Players
27+
28+
For the users who want to play games created using Deemak, you can:
29+
30+
- 🎮 Play text-based adventure games in Deemak GUI or Web.
31+
- 🚶‍♀️ Walk around different locations, interact with objects, and solve puzzles.
32+
- 🔓 Unlock new levels, open chests and find hidden secrets within sekai.
33+
34+
### 🛠️ For Developers
35+
36+
For Developers hoping to create their own games using Deemak, our game engine:
37+
38+
- 🔄 Takes your file directory and automatically converts it into a playable game.
39+
- 🔐 Provides a simple single command to lock levels and chests with your passwords within the game.
40+
- 📦 One step command line instruction to export to a playable `.deemak` for the users, with your set password protecting users from accessing the files directly.
41+
- 🛡️ Provides strong security for protection of hidden passwords for locked chests and levels, to prevent hacking and cheating.
42+
43+
---
44+
45+
## 📚 How to use Deemak (For Developers)
46+
47+
> ⚠️ Since Deemak is still under development, Only Developing instructions are provided.
448
549
1. Clone the repository
650

@@ -9,30 +53,82 @@ git clone https://github.com/databasedIISc/deemak.git
953
cd deemak
1054
```
1155

12-
2. Simply run the following command to start terminal version -
56+
> 💡 **Tip:** For any information, you can try `deemak --help` or `deemak <command> --help` for specific command.
57+
58+
2. Run the following command to start terminal version -
1359

1460
Note that we need to pass the world directory as the first argument.
1561

1662
```bash
17-
cargo run sekai
63+
cargo run sekai.deemak dev play
64+
cargo run sekai.deemak dev play --web # to run in web
1865
```
1966

20-
or
21-
run the following command to start web version.
67+
- 🌐 For web, open your browser and navigate to: http://localhost:8000
68+
- ⚙️ To change the port, you go to .env file and change the `BACKEND_PORT` value (default BACKEND_PORT=8001).
2269

23-
```bash
24-
cargo run sekai --web
25-
```
70+
Dev Mode automatically runs in Debug mode providing you with detailed logs and functionality to create and test your game.
2671

27-
Then, open your browser and navigate to: http://localhost:8000
28-
- To change the port, you go to .env file and change the `BACKEND_PORT` value (default BACKEND_PORT=8001).
29-
- To run in debug mode, you can do -
72+
3. To create a new game, run the following command:
3073

3174
```bash
32-
cargo run sekai --debug # OR
33-
cargo run sekai --web --debug
75+
cargo run sekai dev create # sekai is a directory you created
3476
```
3577

36-
## Contribution
78+
Check out more functionality using `--help` flag.
79+
80+
---
81+
82+
## 🧩 How Deemak Works
83+
84+
Here is a brief overview of how Deemak works:
85+
86+
### 1. `.deemak` File Format 📄
87+
88+
This file is created after special encryption and compression of the game directory. The header of the binary should contain `dbdeemak` for verification. Also a Developer set password is required to initially lock the game. It is subjected to change(for now) since the password is not stored within the file.
89+
90+
### 2. Game Working 🎮
91+
92+
The game calls an file or directory as `object`. Each object contains its metadata. All the folders must contain a `.dirinfo` folder containing all hidden metadata like `info.json` and passwords. This is automatically created and You need not manually create it(Unless you want to edit the description of the directory level).
93+
94+
`info.json` is the main file contains the description of the directory, location, what all objects are present in the directory with their permission bits and other metadata.
95+
96+
When you run the game, it loads the `sekai` directory and starts from the root directory. You can navigate through the directories, interact with objects, and unlock new levels or chests using the commands provided, all handling of the `.dirinfo` is automatically handled by Deemak.
97+
98+
### 3. Security and Unlocking 🔒
99+
100+
You can lock certain directories or files using a password. This is done using strong encryption algorithms to ensure that the passwords are not easily guessable or hackable.
101+
102+
> 🚧 The unlocking feature is still under development.
103+
104+
We implement Two separate locking mechanisms - Level Locking and Chest Locking. Level locking is higher security and it meant for directories, while chest locking is meant for both files and directories. The intuition of which is use when is as the name suggests, but you can think about it as **"You are entering a locked door vs You are opening a sub task of opening a locked treasure Chest"**.
105+
106+
### 4. During Execution of the Game ⚡
107+
108+
The game is run in a temporary location hidden from the User(with no read access to a third user). The deemak file in opened and extracted in the temporary location and executed with all functionalities there. When you exit, your progress must be saved by the User, otherwise it will replay from the last saved location(or START if no save is present).
109+
110+
If you are a developer(in Dev Mode), too avoid pain going to the temporary location, the temporary location is set to your CWD. You can provide both a directory or a `.deemak` file in Dev Mode. You will also get detailed logs of what is happening in the background for debugging purposes. Since you are the developer, you know the password, so use `--dev` flag to provide the password and enjoy the dev mode functionalities. Any 3rd User playing the game will not have access to these functionalities because of your private password.
111+
112+
---
113+
114+
## 📝 TODO's
115+
116+
- [ ] Debug input folder/deemak format file for developers, with appropriate location of run.
117+
- [ ] Fix unlocking feature.
118+
- [ ] Release a stable version.
119+
- [ ] Create User Info and data for saving game progress.
120+
121+
> 🐛 For any issues and suggestions, please create an issue in our GitHub repository.
122+
123+
---
124+
125+
## 👏 Acknowledgements
126+
127+
This project was developed under Delta-25 initiative by UnderGraduate [Databased](https://databased.iisc.ac.in) Club at IISc, Bangalore, India. This was done as project of Rust Learning Group. The software is developed by:
37128

38-
Please fork the repository and make PRs to the main branch. We will review and merge them.
129+
- [Anirudh Gupta](https://github.com/AnirudhG07) 👨‍💻
130+
- [Palak Raisinghani](https://github.com/Pal-R-S) 👩‍💻
131+
- [Pritesh Jogirdhar](https://github.com/Pritesh299) 👨‍💻
132+
- [Nikhil Jamuda](https://github.com/nimx89) 👨‍💻
133+
- [Aditya Thakkar](https://github.com/Aditya-A-Thakkar) 👨‍💻
134+
- Thanks to [Aditya Arsh](https://github.com/chocabloc) for logo and brainstorming. 🎨

assets/deemak_logo.png

762 KB
Loading

0 commit comments

Comments
 (0)