Code Monkey home page Code Monkey logo

bombswab's Introduction

.github

GitHub profile for Schwungus Software.

bombswab's People

Contributors

localinsomniac avatar nonk123 avatar

Stargazers

 avatar

Watchers

 avatar

bombswab's Issues

Inventory

A basic inventory system. Several inventory slots as clickable buttons and a hand slot. Clicking on an empty inventory slot puts the item from your hand slot. Clicking on the slot again brings it back into your hand.

Add enemy AI

They should follow the player while keeping a distance in their shooting range. They shoot whenever they have LoS with a slight cooldown. Obtaining LoS takes a few turns. They should stop shooting when they're out of ammo and just stand still for now since there is no reloading.

Items on the ground

Basically a Thing with an ItemSlot inside of it. Take the item away (e.g. by walking on it) to keep it and destroy the Thing.

Bullet sprite

Shooting rockets out of a rifle isn't very realistic.

Add things and actions

Things perform actions. Actions take several ticks to complete. Once an action is finished, another one can be taken. Simple enough, right?

Action examples:

  • Moving in one of the four cardinal directions.
  • Shooting & reloading.
  • Defusing a bomb.

Ammo and reloading

Weapons use clips now. Shooting drops bullet casings on the ground. Clips need to be filled with bullets. Reloading is a matter of swapping the clip inside the weapon with another one in your inventory.

Refactor

Sounds very general, but here's the deal:

  • Split large headers into .hpp and .tpp.
  • Merge .hpp and .tpp dirs into src.
  • Review bits of code that were written past 10 PM (they suck).
  • Possibly resolve some TODOs in the code.

Add smooth walking

Basically, lerp the camera offset into the destination tile across the entire duration of the Move action.

Add noise/alertness system for AI units

Thing like:

  • Humanoid steps.
  • Plopping bullets.
  • Shooting with or without a silencer.
  • Certain item interactions.

Create different amounts of noise. Depending on how far the sound propagates, it could be heard by AI units.

The sound propagation code could be intertwined with what we have so far for volume/panning.

Add dummy enemies

For now, there are just some dummies that spawn when the game starts.

Add levels and floor progression

The first level starts at a 32x32 grid. Every subsequent level increases both its dimensions by 25%. If you die, you go back to level 1. If you survive through a level and defuse and/or explode all bombs, you get transported to the next level instantly.

Implement line raster

This is a prerequisite to several things, like bullets moving in a straight line and... nothing else, really.

Flippable sprites

Add a feature for Sprites to be horizontally flipped. Makes details look more variant by randomly flipping them around and makes it easier to tell where other Humanoids are facing.

Modding

We most likely won't do it.
Also, Lua.

Add a scoring system

There isn't any purpose for a score counter yet, but we'll get there. Perhaps there will be a way to spend the points on upgrades?

Scoring examples:

  • Killing an enemy grants some points.
  • Blowing up a mine deducts points for being reckless.
  • Defusing a bomb grants a bunch of points.

Add a minesweeper grid

We could use a quadtree for this, but it isn't going to make the lookup/storage much more efficient. Minesweeper maps are really small anyways, so we'll be writing more code for nothing. Could be done later this way, but for now, a simple grid is enough.

The grid is composed of tiles. A tile can be "opened" to reveal a bomb or an enemy, if present. Tiles are destructible, and that's the whole point of the game. Empty space is considered a tile too. Large empty spaces on the map may be filled with enemies, so be careful when you reveal them!

Add tinted sprites

The current Sprite type is only used for sprite indices and doesn't store information about how it should be rendered. draw does support tinting, but the tint should be moved into a separate type called TintedSprite. Sprite can then be implicitly converted into TintedSprite with a full-white tint; otherwise, the tint could be specified in the constructor.

Multiplayer?

Syncing levels between multiple players isn't going to be that difficult compared to other Schwungus Software projects, so why not?

Allow flagging tiles

Add a rechargeable flag item that allows setting up a tile for "defusal". Once you set up a tile, your flag is unavailable until the defusal is finished. Defusing a tile opens it, places a flag on top, and starts a countdown. At the end of the countdown, the contents of the tile are revealed and you get a drop (see table below). If the flag gets destroyed during the countdown, you lose points, the flag explodes, and reveals its contents (in this exact order).

Defused tile Drop
Bomb Extra points; plus, the bomb doesn't explode
Enemy spawn The enemies die instantly
Item drop You get better/more items
Empty tile You just waste time defusing it

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.