Giter Site home page Giter Site logo

zerok-rts / zero-k Goto Github PK

View Code? Open in Web Editor NEW
661.0 41.0 200.0 851.68 MB

Open source RTS game running on the Spring/Recoil engine

Home Page: https://zero-k.info

License: GNU General Public License v2.0

Lua 99.39% C 0.06% GLSL 0.55%
cross-platform game open-source opensource real-time-strategy rts rts-game scifi springrts lua

zero-k's Introduction

zero-k's People

Contributors

a-nop avatar aeonios avatar aquanim avatar arch-shaman avatar archshaman avatar carabusx avatar crazyeddietk avatar danfireman avatar deinfreund avatar dvr333 avatar esainane avatar googlefrog avatar histidine91 avatar jkmunson avatar jseah avatar klonzk avatar licho1 avatar luckywaldo7 avatar moreginger avatar n0u avatar porkch0p avatar psimyn avatar rtwfroody avatar rymarq avatar skasi avatar sprunk avatar tomfyuri avatar versus666 avatar wagonrepairer avatar xponen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zero-k's Issues

Gated unlock system for team games

Based on http://zero-k.info/Forum/Thread/8884:

Make a list of locked units in gadget and site DB. These unit unlocks require 0 XP and are automatically unlocked when a player reaches the needed level.
All Springies set "enable unlock system" modoption to false, except TEAMS: All Welcome and SMALL TEAMS: All Welcome.

Proposed unlock list:
Level 2: Amph fac, gunship fac
Level 3: Jumpjet fac, adv radar, storage
Level 4: Plane fac, missile silo, DDM
Level 5: Strider hub, Annihilator, Singularity Reactor
Level 6: Behemoth, Krow
Level 7: Big Bertha
Level 8: Silencer
Level 9: Bantha
Level 10: Detriment, Zenith, Starlight, DRP

Late-joiner's messages are not displayed in lobby

When a spectator joins the game at a later time then their ingame chat messages are not displayed in the lobby by Springiee.

Example:

  • Game starts
  • 5 minutes later Skasi joins to watch
  • Ingame Skasi presses Ctrl+Enter to write to all and says "Honk!"
  • Tab out to lobby, Springiee did not forward the message

Teleportation progress does not reset when loaded by transporter

The teleportation progress of units by Djinn does not reset to 0% when Djinn is loaded onto a transporter.

To exploit:
Build a Djinn, plop a beacon
Give Detriment a teleport order
When teleport progress reaches 90%, pick up Djinn with a Valkyrie
Send Valk into enemy base and drop Djinn
Detriment will arrive almost instantly!

EMP's Disarm component is wonky

EMP works on max HP. Disarm works on current HP.
EMP applies Disarm damage based on current HP if the unit already has disarm>emp, else based on max.

Example:
a unit with 1000 / 1000 HP gets 100 EMP damage. It has 10% EMP and the implied 10% Disarm.
a unit with 100 / 1000 HP gets 100 EMP damage. It has 10% EMP and the implied 10% Disarm.

a unit with 1000 / 1000HP gets 100 disarm damage. It has 10% Disarm. It then gets 100 EMP. It now has 10% EMP and 20% Disarm.

a unit with 100 / 1000HP gets 100 disarm damage. It has 100% Disarm. It then gets 100 EMP. It now has 10% EMP and 200% Disarm.

Morph cleanses EMP

It allows for at least 2 exploits:

  1. non-combat morph (ie. units and not comms) can cleanse all EMP damage by starting morph and immediately cancelling it. Might be pretty big for striders who tend to rack up XP easily and whose one of the counters is EMP (eg. Spy). During morph it also has full EMP immunity (you can dodge Shockleys or Spies if you see them coming).
  2. morph continues after the unit gets partially reclaimed. Morph finished while reclaimed leaves debris (and may create an explosion if >70%). Using Aspis/Aegis (or other circle-morphs), you can create infinite debris: start morphing an Aegis, reclaim it a bit to 99%, after it becomes Aspis it leaves 99% Aegis Debris, rebuild the Aspis and start morph back to Aegis again, reclaim to 99% and it will again leave 99% Aspis Debris on finish. The metal created exceeds the morph costs (205 vs 70). Metal extractors will go bankrupt!

Morph disregards slowdamage and doesn't carry it over for the new unit; it also disregards Disarm and EMP (for combat morphs; unit morphs have EMP cleanse and full immunity), though it does carry these over. Like said, it also disregards being reclaimed. Transports picking morphing units up pause the morph; getting unloaded cancels non-combat morphs without a refund. Using the air trans drop feature, morph gets stuck, does not advance, and the morph cannot be cancelled in any way (including picking it up again and unloading).

Also, morph availability and paths are somewhat arbitrary.

New Resource Bar Feedback

The layout of the numbers and bars seems to work well. I have not tried in game though but the balance bar looks useful too.

The storage numbers should never be coloured. In the context of the resource bar the red colour means pull. I want to be able to glance at the red numbers to see my pull without being distracted by my storage.

Reserve is hard to set accurately. The small storage bars are hard to click on. The main issue is that I could not set a reserve of zero.

The UI element has a fixed size. It should be resizable in tweak mode.

The increase/decrease arrows on the storage bars have some consistency problems. I had the metal increase arrow flash on periodically with higher pull than income.

The tooltips for the 4 main numbers need improvement. For example metal pull says this is the demand of your construction but it is also the demand of morph and stockpile. The energy pull tooltip says it is the demand of economy instead of using the word construction. Instead of trying to list all the demands it may be better to say "This is the total metal demand of your economy" and "this is this total energy demand of your economy and abilities which require energy upkeep".

Now that the storage bars are smaller the flashing may need to be more obvious to gain peoples attention. The bars could also be fatter, I don't see much of a problem with this. They would just look more like buckets.

Obviously the arrow graphics are placeholders. The center indicator will have to be able to stretch.

[string "gamedata/unitdefs_post.lua"]:160: attempt to compare number with nil

happens at start for me:

[f=0000000] Error: 2, gamedata/defs.lua, [string "gamedata/defs.lua"]:38: [string "gamedata/defs.lua"]:26: error = 2, gamedata/unitDefs.lua, error = 2, gamedata/unitdefs_post.lua, [string "gamedata/unitdefs_post.lua"]:160: attempt to compare number with nil

to reproduce use Spring 97.0.1-179-g1477326 develop, start spring & click test game on map DeltaSiegeDGun.

regardingless of that lua error message, maxvelocity is deprecated:

spring/spring@e29282f

Experimental issue

This issue existed to test github issues -> ircbridge -> #zkdev issues reporting.

bunching shields do not increase felon recharge rate, create wasteful charging loop

Googlefrog's shield-link use random chance to initiate charge transfer. This mean: if you attach a shieldfelon to a bunch of (eg: 9) closely packed corthud, the corthud have 9/10 (90%) chance to loop charge among themselves, and only 1/10 (10%) chance to share with the shieldfelon .

This is at odd with the manual, which says:
"The Felon draws energy from its shield, discharging it in accurate bursts. Link it to other shields to increase its rate of fire"

Negative implication:
-shieldfelon blob will be nerfed, because its charge rate can't go above single-link charge rate.
-shieldfelon unintuitively get charging boost when connected to a shield that is not connected to any other shield.

start button has no cooldown

leading to

[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start
[15:25] ice2458 !start

(or any button for that matter)

Weird UnitAI when attack command on defense

This happens for many different units, examples: Reaper, Leveler, Zeus. Warrior, ...
Give them a direct attack command on an LLT, HLT (and maybe other defensive structures as well) and they go back and forth, do circles and similar things. More often than not they end up moving away too far and being unable to attack.

Not sure if it's the same issue, but I think I remember Raiders occasionally dancing around Fusions, Singularities and similar. This can sometimes be extremely annoying when trying to place raiders in a spot behind buildings that is safe from enemy defensive structures.

Instead of this weird behavior units should be standing still and firing at the towers. At most Glaives and other fast units should try dancing around HLTs to dodge shots, but even that might have negative consequences.

Low priority does not work properly (build priorioty)

Start two projects, leave one on normal, put other on low priority.
Even when you stall you still get progress on low priority..
Normal should completely block low priority.
Best seen for example with moho geo morph + something on low prio.

This used to work properly in the past

Oceanfloor thermal vents unusable

Geo is unbuildable underwater. Of course one could Terraform those, but the point of Geo is to be efficient and wasting hundreds of metal on terra breaks this somewhat.
Also, underwater Geos would be more elegant visually than ugly concrete platforms.

Selected units widget shows invisible icons

In default size/settings, selection window "shows" extra 2 icons below standard set, those two icons are only partially visible near bottom of the widget (like 3-5 pixels high).
When more icons appear, it compacts them into collapsed lists.

Correct behavior would be to collapse 2 icons earlier when there is no space for them

randomness is sad model for shield-link, is nerfed too much

Randomized shield link is too stupid, it have high chance to not transfer charge at all (because other unit is full) and spend too much time transfer charge back & forth (because it choose almost full unit).

I raised the issue here: #88
Why do we have to nerf shield-link to nerf Felon? just nerf Felon directly.

Suggestion:
I'm thinking we can force shield unit to remember previous link to avoid back&forth case. I have tried with the idea of checking for neighbour with lowest charge but that is too expensive.

Air units still consume energy after forced off air repair/rearm pad

How to reproduce:
Land a damaged air unit on an air repair pad. It now consumes 2.5 energy per second. Before its fully repaired, order it to lift off the pad. It still consumes 2.5 energy per second even though it should be 0 now.

Landing the unit on an air repair pad again and waiting for repairs to complete resets energy consumption to 0. Completing repairs while outside the pad does not reset energy consumption.

Air repair pad ignores some status effects

Air repair/rearm pads repair units at full speed while slowed and disarmed. They also repair at full speed even when in-repair units have taken damage recently (in-combat repair speed should be 1/2x while out-of-combat repair speed is 2x).

DOES NOT happen while emped.

Airpad disregards status effects

Stunned, Disarmed and Slowed air repair pads still work at 100% efficiency.
Slowed bombers repair/refuel at 100% speed.
Disarmed bombers do not refuel but keep the E usage.

Land mode + always fly high can break Raven controls

To reproduce:

  1. Set Raven to "always fly low (red)" and turn off "land mode" (grey)
  2. Give Raven a move order to a location - the path the bomber takes must be flat (eg most of comet catcher redux)

When arriving at the target location the Raven will NOT land, it will continue flying straight and ignore any further move commands.

As soon as the bomber changes flight height - either because of uneven terrain, or because the "always fly low" state was changed - the bomber will stop ignoring orders and function properly again.

unit_repair_speed gadget errors

Replay: http://zero-k.info/Battles/Detail/268697
Five occurences around 14 minutes into the game
Frames 0024995, 0024996, 0025000, 0025001, 0025005

Error message:
Error: LuaRules::RunCallIn: error = 2, UnitDamaged, [string "LuaRules/Gadgets/unit_repair_speed.lua"]:56: bad argument #-1 to 'spAreTeamsAllied' (number expected, got nil)
stack traceback:
[C]: in function 'spAreTeamsAllied'
[string "LuaRules/Gadgets/unit_repair_speed.lua"]:56: in function 'UnitDamaged'
[string "LuaRules/gadgets.lua"]:1532: in function <[string "LuaRules/gadgets.lua"]:1512>
(tail call): ?

Make planes and gunships drop death clones when they crash.

If a plane (or gunship in dev engine) is lightly killed it will crash. Then it rams into the ground and takes a lot of damage which causes it to drop debris. This is inconsistent because lightly killing units usually leaves death clones. Fixing this is a matter of changing the death in the LUS to detect whether the unit is crashing and if so use the un-overkilled death.

Overdrive nil orgMetal

It seems that the overdrive gadget will break if too much energy is on the grid. This will likely not happen in real games, but it seems like around +25000e/s or +600m/s or something similarly huge and the gadget breaks with the error:

[f=0011489] Error: LuaRules::RunCallIn: error = 2, GameFrame, [Internal Lua error: Call failure] [string "LuaRules/Gadgets/unit_mex_overdrive.lua"]:380: attempt to perform arithmetic on local 'orgMetal' (a nil value)
stack traceback:
[string "LuaRules/Gadgets/unit_mex_overdrive.lua"]:380: in function 'AddPylonToGrid'
[string "LuaRules/Gadgets/unit_mex_overdrive.lua"]:646: in function 'AddPylonsInQueueToGrid'
[string "LuaRules/Gadgets/unit_mex_overdrive.lua"]:904: in function 'GameFrame'
[string "LuaRules/gadgets.lua"]:1004: in function <[string "LuaRules/gadgets.lua"]:1002>
(tail call): ?

Using Engine version 97.0.1-258, latest Zero-K from Git

Metal spot interface drawn below terrain

The yellow circles that highlight metal spots and metal bars used to display base income are currently drawn below the ground layer. This can make it hard to tell base income at a glance.
metal spot view

Brawler death clone is sideways

The death clone of Brawler is sideways to the direction that it was facing in life. This makes it look silly when it dies.

IRC Style colors seem broken in ZKL

[1:39:44 AM] Licho i guess incomplete/buggy irc implementation
[1:39:53 AM] maybe after xponen tried to fix formatting ?
[1:39:53 AM] Anarchid it's fairly gebork in SWL too
[1:40:02 AM] looks like 13Zero-k 15Licho1 etc
[1:40:04 AM] Licho because im pretty sure IRC worked fine
[1:40:08 AM] because this is IRC chat control
[1:40:25 AM] Anarchid hmmm
[1:40:28 AM] maybe those are colors?
[1:40:29 AM] Licho will need to test with pre xponen version
[1:40:32 AM] yeah colors
[1:40:39 AM] \13z
[1:40:41 AM] xponen what did I do
[1:40:42 AM] Anarchid does spring lobby support colors?

Raven ignores active dive state after bombing

To reproduce:

  1. Set Raven to "always fly low (red)"
  2. Give Raven an attack order

When dropping its bomb the Raven will start to fly at high altitude. This will continue until the dive mode is set again, even after refuel/rearm.

Unexplained terraform behaviour

In this replay http://zero-k.info/Battles/Detail/285752 at 4:50 into the game watch the terraform progress next to my dying commander (comm name "Urist McEco"). The terraform command 'Level' was used to dig a hole. When the commander died while building the terraform, the hole suddenly turned into a (guessing) ~200 elmo high spike/pillar. The slope was steeper than usual, perhaps even a 90° incline.

Carrier Drone Bug

http://zero-k.info/Battles/Detail/279722

[f=0019039] Error: LuaRules::RunCallIn: error = 2, GameFrame, [string "LuaRules/Gadgets/unit_carrier_drones.lua"]:179: [string "LuaRules/Gadgets/unit_carrier_drones.lua"]:296: attempt to perform arithmetic on local 'dy' (a nil value)
stack traceback:
[C]: in function 'assert'
[string "LuaRules/Gadgets/unit_carrier_drones.lua"]:179: in function 'UpdateCoroutines'
[string "LuaRules/Gadgets/unit_carrier_drones.lua"]:537: in function 'GameFrame'
[string "LuaRules/gadgets.lua"]:1004: in function <[string "LuaRules/gadgets.lua"]:1002>
(tail call): ?

Disarm does not block self-D

Crawling bombs can still explode, both manually and by themselves on fire at will (and everything else using manual self-D)

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.