packages feed

alpaca-netcode-0.1.0.0: alpaca-netcode.cabal

cabal-version:       1.12
name:                alpaca-netcode
version:             0.1.0.0
synopsis:            Rollback/replay NetCode for realtime, deterministic, multiplayer games.
description:
  A rollback/replay client-server system for realtime multiplayer games. The API
  only requires you to express your game as a pure, deterministic function.
  .
  See "Alpaca.NetCode" to get started.
  .
  === Advantages
  * Simple code. Your game logic contains no NetCode.
  * Low bandwidth. Only inputs are shared.
  * Zero latency. Player's own inputs affect their game immediatly.
  * UDP based. Unordered and using redundancy to mitigate packet loss.
  * Lightweight server. The server does not run the game logic, it only relays and tracks user inputs.
  * Cheating. Only inputs are shared which eliminates a whole class state manipulation cheats.
  .
  === Disadvantages
  * Increased CPU usage. Rollback/replay means that clients must run the game step function multiple times per frame.
  * Not suitable for large numbers of players. Tens of players is likey reasonable.
  .
  === Disclaimer
  This is an initial release with minimal functionality and still very
  experimental. Use at your own risk.

-- bug-reports:
license:             Apache-2.0
license-file:        LICENSE
author:              David Eichmann
maintainer:          davide@well-typed.com
copyright:           2021 David Eichmann
category:            Network, Game Engine
build-type:          Simple
extra-source-files:  CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/DavidEichmann/alpaca-netcode

library
  other-modules:
      Alpaca.NetCode.Internal.Client
    , Alpaca.NetCode.Internal.ClockSync
    , Alpaca.NetCode.Internal.Common
    , Alpaca.NetCode.Internal.Server
  exposed-modules:
      Alpaca.NetCode
    , Alpaca.NetCode.Advanced
  build-depends:       base >= 4.9 && < 4.16
                     , bytestring
                     , containers
                     , flat
                     , hashable
                     , network >= 3.1 && < 3.2
                     , network-run
                     , random
                     , stm
                     , time

  hs-source-dirs: src
  ghc-options: -Wall
  default-language:    Haskell2010

test-suite test
  Type:                     exitcode-stdio-1.0
  hs-source-dirs: test
  Main-is:                  Test.hs
  Build-depends:            base >= 4.9 && < 4.16
                          , alpaca-netcode
                          , containers
                          , random
                          , tasty
                          , tasty-hunit
  default-language: Haskell2010