Giter Club home page Giter Club logo

powenyao / spellcrafter Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 81.31 MB

A game based on spell customization. Players will be given a series of challenges and must figure out the appropriate spell to overcome the challenge. The challenge may be solved in various ways similar to Zachatronic style games. Players can optimize in different ways based on their own personal preferences.

C# 65.65% ShaderLab 27.61% HLSL 4.66% CSS 0.46% HTML 1.62%

spellcrafter's Introduction

SpellCrafter

A game based on spell customization. Players will be given a series of challenges and must figure out the appropriate spell to overcome the challenge. The challenge may be solved in various ways similar to Zachatronic style games. Players can optimize in different ways based on their own personal preferences.

View the Game Design Document!

spellcrafter's People

Contributors

vinaygupta23 avatar powenyao avatar yangtian1437 avatar noweber avatar

Watchers

 avatar  avatar

spellcrafter's Issues

Spells not able to hit the floor/terrain

This is particularly important for certain spell types. You might want to aim the AoE pull at the ground. Right now, it requires the other object to be IDamageReceiver.

Phone Support

  1. Virtual Joysticks to rotate
  2. Tap anywhere on screen to fire
  3. Crafting Menu Button
  4. Resolution tweaks

Discussion: Using ScriptableObject for Spell Component instead?

https://docs.unity3d.com/Manual/class-ScriptableObject.html

We need to track some values for a Spell Component.

Consider "Widen"
It will increase the model and collider's scale in the axis x y z by a particular value a.
In next version, it should cost mana of b to utilize.
string: "widen"
effect: "scale"
dimension: "x, y, z"
value: a
mana cost: b

How should we store, access, modify these values?
SpellComponent.cs : MonoBehaviour?
SpellComponnet.cs?
SpellComponent.cs : ScriptableObject?

currently, "SpellComponent" is just represented by an enum or sometimes a string. This is a problem because it doesn't have all the additional information mentioned above.

Projectile Path

@tyang863 If you want to help:

Take a look at projectile_spell_shootable.cs
In Update() we call Process() which will then call Move(). We have the Enum_SpellBehaviors.Tracking for homing missiles and SpellBehaviors.Path forStraight Move.

However, what we want is that there are 3 levels of Tracking. None, Partial, Full.
Then regardless of the type of tracking, we can have different projectile paths.

  1. Straight
  2. Spiral
  3. Curved
  4. Manhattan
  5. Arc
  6. Sin Wave

This should be implemented in the partial class/file SpellBase.Behavior

Arc and Curved are the same things but on a different axis.
image

These should probably be done by modifying the acceleration in different axis with certain values.

Projectile to be fired with a parabola arc

  1. Projectile can be fired with a parabola arc that goes high up in the air and down
  2. ideally, we also visualize what the arc will look like; you might want to refer to XRITK's teleportation ray. Also, google grenade throw visualization.

Subservice_Sorcery's Launcher/SpellComposition situation

Right now, Subservice_Sorcery tracks the SpellComposition of a Launcher via a string identifier (e.g. "Player")
Each Launcher is only associated with 1 SpellComposition.

Given Launcher is like a gun and SpellComposition is like a bullet,
we might want to move to have a data structure of SpellComposition instead.

Subservice Sorcery would have its API modified to support launchers with a single shot, multiple shots, and so on.

Consider the different properties of Launcher and its associated UI, how would they interact with Subservice_Sorcery?
What if you want to represent a revolver and stick a bullet in?

Spell System: Support for simultaneous spells

Our system should support casting multiple spells at once.

For example, the case of AoE + Pull at the same time as Projectile or consider AoE + Pull and AoE + Damage at the same time.

For example, consider Spell Component such as Duplicate or Split; we might end up with 5 magic missiles instead of 1 magic missile.

Spell Component: Trigger

Time	x seconds after launch
Contact	after it come into contact with some object
User	after user follow up with an action
Distance	x meters after launch
Expire	When spell fizzles out at the end of its lifetime

Above are different types of trigger.
These triggers can be associated with another SpellComposition so that when a fire+sphere spell hit the floor, it will create an AoE + fire + damage.

Damage based on Elements

Spells do different damage to same element vs. other element
Same element: full damage
Other element: no damage (maybe)
Gray: Reduced damage to all elements

Make SpeedDown component

Currently we have the component SpeedUp. We can make a SpeedDown version. Possibly it will kind of solve the problem that parabola run too far away.

Crafting UI Improvements

  1. Option to save current spell selection for later use as a preset
  2. Remember last X spells crafted and present them as buttons or something the player can select
  3. Default Button / Clear Current Selection

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.