Skip to content

Latest commit

 

History

History
66 lines (51 loc) · 4.55 KB

README.md

File metadata and controls

66 lines (51 loc) · 4.55 KB

Retro Reversi

Retro Reversi is an Android app of the board game Reversi (also known as Othello) that features online matchmaking and a retro look. Made with LibGDX.

Get it on Google Play

Note: this is a view-only repository. For the original development repository, go here.

Screenshots

Main Menu Game Screen Multiplayer Screen

Compatibility

Works on

  • Android 4.0.3 and up

Contributors

Artwork

  • Huge shout-out to Kenney for most of the used artwork
  • Achievements' icons from Flaticon

Developers

Third party libraries

Development

Installing the development environment

  • Clone this repository and open it with Android Studio. - more info here
  • Set your Run Configuration to work in android/assets folder.
  • Run via emulator or USB.

Note: for Play Games Services usage you must sign your app according to your own linked app - more info here

Design Patterns

  • Strategy - An AI's moves are chosen through an algorithm. Different AI difficulties have different algorithms for the way it chooses a move
  • Model-View-Presenter - To separate the components' representation from its logic and relations and facilitate unit testing
  • Memento - Implement 'Undo last play' functionality (only on local gameplay)

UML Diagrams

Model Diagram

Model

View & Presenter Diagram

Model

State Diagrams

App State Machine

AppStateMachine

Game Logic State Machine

GameStateMachine

Other Notes

Relevant Design Decisions

  • Choosing MVP over MVC as the main architectural design pattern turned out to be very useful, given the 'button-based' interface for both in-game and menu controls
  • Having the game logic implemented seperately from the rest of the application allowed to easily write tests to check its functionalities
  • The early on research and structural design regading viewports, layouts and other libGDX related visual elemements allowed us to properly make a responsive app that works across multiple devices
  • The well-design separation of concerns regarding the main components made the AI integration alongside the user controls seamless
  • The same applied to the online multiplayer integration, however the Play Games API integration was a lot of work
  • Having each visual board position handle its logic allowed us to gradually implement additional visual functionalities, such as animations and placement suggestions, while leaving the game logic intact.

License

  • This code is licensed under MIT.