Skip to content

One Dungeon is a ​1-Bit-style platformer game that consists of one level. The project has been written solely in Dart Language.

License

Notifications You must be signed in to change notification settings

BBarisKilic/One-Dungeon

Repository files navigation

One Dungeon

One Dungeon Gameplay

one_dungeon coverage style: very good analysis License: MIT

One Dungeon is a ​1-Bit-style platformer game that consists of one level. It developed during the Midyear 2022 Flame Game Jam.

Playable on GitHub and itch.io through a web browser.


How to Play 🎮

In the game, we have the character named Dundee. You can move him with the buttons W, A and D.

W : Jump

A : Left Move

D : Right Move

The goal in the game is to pass the Dungeon as soon as possible and get the highest score. Collected stars contribute to raising the endgame score. Come on, we'll be waiting for you at the end of the Dungeon!

How to Play


Getting Started 🚀

This project contains 3 flavors:

  • development
  • staging
  • production

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*One Dungeon works on Web.

Game Play


Running Tests 🧪

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

Loading


Working with Translations 🌐

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. Then add a new key/value and description
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. Use the new string
import 'package:one_dungeon/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

    ...

    <key>CFBundleLocalizations</key>
	<array>
		<string>en</string>
		<string>de</string>
	</array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
├── l10n
│   ├── arb
│   │   ├── app_de.arb
│   │   └── app_en.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "gameTitle": "One Dungeon",
    "@gameTitle": {
        "description": "The name of the game"
    }
}

app_de.arb

{
    "@@locale": "de",
    "gameTitle": "One Dungeon",
    "@gameTitle": {
        "description": "Der Name des Spiels"
    }
}

More 📌

The game is powered by Flame Engine and Flutter. Flame is a minimalist Flutter game engine that provides a nice set of somewhat independent modules you can choose.

In the source code, you will see tested and %100 covered clean code. The project has been created using Very Good CLI. Also used Flame Behaviors package that applies separation of concerns to game logic in the form of Entities and Behaviors. Other packages worth mentioning are Bloc, Equatable, Freezed, GetIt and Mocktail.

About


Credits 🌹


Feature Requests and Bugs 🐛

Please file feature requests and bugs at the issue tracker.


Maintainers 🏭

Game Over