Coder Social home page Coder Social logo

lauralaureus / botmender Goto Github PK

View Code? Open in Web Editor NEW

This project forked from trigary/botmender

0.0 2.0 0.0 675 KB

A TPS Unity game where bots can be built from blocks and then taken into (PvP) action.

License: GNU General Public License v3.0

C# 100.00%

botmender's Introduction

BotMender

A TPS Unity game where bots can be built from blocks and then taken into (PvP) action. The current version is an early prototype and is continuously being updated. There is no playable build, the project has to be imported into Unity to run it.

Here's an example image of a bot: (authentic programmer graphics)
example-bot

Blocks, building, systems

Each block has mass, health and "connect-sides": sides on which it can connect to other blocks. The block placement system is expected to get reworked a bit due to only allowing blocks which take a whole block unit of space.

All blocks may also define a system: if the block is placed, the system gets installed onto the bot. There are 3 kinds of system: propulsion, weapon and active. An active system usually gives some sort of special ability which has a cooldown. Passive systems might get introduced in the future.

Bots (structures)

A structure is a collection of its parts (blocks) and systems. There are two types of structures: editable (still under construction) and complete (usable, playable). Since the systems are defined by the blocks, a structure can be serialized just by serializing its blocks. The health of a structure is the sum of its blocks' health. A block/system can be specified by specifying the structure's ID and the block's position.

Current state

This project is currently an early prototype. Nothing is final, and everything which has been made is subject to improvement. The current goal is to implement a basic version of as many of the features as possible. This allows design errors to be spotted early on, before any radical changes would be required when fixing them. This also means that all front-end development is kept to a bare minimum.

Contributing

If you are thinking of contributing, feel free to do so, no need to be shy! As outlined in the previous paragraph, the main focus is back-end development for the moment, but don't let that discourage you if that's not your thing. Check out the contributing file for more information.

Codebase

Verbose naming and lots of documentation should make the codebase easy to read. Unfortunately, it's not always enough and that's what this section hopes to aid.

Networking

DoubleSocket is used to handle the networking. This allows the bypassing of Unity's limited and poorly documented HLAPI and LLAPI. The library uses a synchronized TCP and UDP socket for each party, therefore taking advantage of TCP's flow and congestion control while also allowing UDP packets to be used when reliability and ordered packets are not required.

The game is designed with both dedicated servers and player hosted games in mind. This means that the server may or may not be a client as well. UDP packets are sent to all connected clients, while TCP packets are usually sent from the server to all non-host clients (who are referred to as client-only clients) or from one client to the server. Packet sends between the host-client and the server are minimized, since it's an overhead which is usually easy to circumvent. Network condition simulation has been implemented.

Adding new blocks, systems

All instructions about how to register blocks, systems can be found in the BlockFactory and SystemFactory classes.

botmender's People

Contributors

ash-shaun avatar trigary avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.