GithubHelp home page GithubHelp logo

enigma2's People

Contributors

adravecz avatar dsge avatar

Watchers

 avatar  avatar  avatar

enigma2's Issues

Make mapParts that contain walls on their edges

These will be used to make sure the player stays inside the designated area.
Thes all should have the same floor area size as the other mapParts.

We need 8 of them, their layout should be like this (viewed from top, each grid cell is a mapPart):
image

Allow BasicMapGenerator to generate a grid of map pieces

After #9 is done.

Instead of creating map pieces in a straight line (in 1 dimension), we should instead generate them in a grid (in 2 dimensions).

  • The map pieces should be randomized
  • The size of the grid should come from two int variables (maybe as private properties of the BasicMapGenerator class)

Make the enemies turn and run towards the Player when they are in range

When the player is near an enemy, the enemy should turn towards the player and start moving in a straight line. The enemies should move very slowly to make it so that the player can easily move out of their range. For now there is no need for them to stop moving when they get too close to the player.

Make sure enemies respect collision with other enemies, the player, and walls.

Right now EnemyMovement::Update() modifies transform.position directly. The problem with this is that transform.position ignores the physics engine and lets you move (teleport) an enemy literally anywhere you want (into walls or into other enemies, up in the sky, down under the ground).

What we need instead is to

  • attach a RigidBody component to the enemies (in BasicEnemySpawner::spawnDefaultEnemies(), just like how the Health component is being attached to them)
  • Use RigidBody.MovePosition() to move the enemies, which should make them respect the colliders of other objects

Create a proper way to change Scenes from code

From code:

  • it should be able to give a list of where the player could go (what warp points exist on the map, and what warp points exist in the world)
  • when a player wants to go to a different map, it should handle the scene switching (if needed) correctly
  • it should handle global components (and the player) correctly upon switching scenes
  • the initial loading of the first scene should also go through this

Rework existing mapParts to feature more recognizable buildings and obstacles

Right now they feature unrecognizable obstacles.

We should change them to include:

  • a bridge (no change necessary)
  • an area with a small house in the middle of it
    • it should include a basic roof
    • it should have a basic door
  • an area with a small pond in the middle of it
    • no need for it to actually feature water, a hole in the ground with a blue plane in it for "water" is good enough
    • it should have invisible walls on the edges of the "pond" so the player wouldn't be able to go into the "water"
  • an area with a cave enterance in the middle of it

Add a UI for listing and using WarpTargets

Implement a Component, which when attached to a GameObject can display a new UI that will list WarpTargets. Basically this task is about creating something similar to Diablo2's waypoint system.

image
( Image is only for reference. We will go for a much more basic looking UI for now. )

  • Add a string displayName attribute to WorldZones and make it into a mandatory constructor parameter
  • Implement a WarpTargetListUI component
  • Make sure that a List<WarpTarget> object can be passed to WarpTargetListUI
  • Create the UI using unity's basic UI that lists each WarpTarget from the List<WarpTarget> object
    • each one of the WarpTargets should have a button next to them that will call GameObject.Find(BasicSceneSwitchHandler.GLOBAL_COMPONENTS_HANDLER_NAME).GetComponent<BasicSceneSwitchHandler>().warpToZone(yourWarpTargetInstance); (sorry for the long function call, will be shortened in the future)
    • each one of the WarpTargets should display their WorldZone's displayName next to the button
      • (optional) if multiple WarpTargets have the same WorldZone displayName then append #2, #3, etc.. to the duplicates's displayName (but do not modify the original List)

Notes:

  • Don't worry about opening/closing this UI for now. It's OK if it's permanently open.
  • Don't worry about showing the currently active WarpTarget for now.

Create a new "BasicMapGenerator" feature

Using the map pieces created in #8 create a class that will add these map pieces to our SampleScene.

  • The name of the class that does this should be BasicMapGenerator and it can be added as a Component to the global components handler GameObject.
  • It should add the map pieces in a straight line starting from the edge of the Plane GameObject.
  • The order can be either hardcoded or random generated.

Create 5 prefabs that we will use as basic map pieces

  • They all should have their own rectangular floors
  • all their floors should be the same size (slightly bigger than the current size of the Bridge prefab)
  • They all should have some "buildings" on them to make them easier to tell apart (one of them can have the Bridge)

Add basic HP system

no need for overhead healthbars for now, either just

  • recolor the enemy when it loses HP
  • or make a global hp UI that is only visible when hovering on an enemy

Make sure enemies always keep looking horizontally (and do not look up or down)

We do not want them to look upwards when they are near the player or when the player is on higher ground.

In other words, after (correctly) using transform.lookAt(player) we want to reset their vertical axis (using it's eulerAngles) to zero. A very similar thing is already being done in PlayerInteractions::calculateMoveDirection().

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.