Giter Site home page Giter Site logo

swendor's People

Contributors

nguoiyoujie avatar

Stargazers

 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

swendor's Issues

General AI Development Tracker

Divided into two main categories

ActionInfo

  • [Evade] To honor AI Bounds, preventing evasion into forbidden zones.
  • [AvoidCollisionRotate] Smarter collision avoidance
  • [Hunt] Devise a way to improve Actor scan to pick targets with less resources.
  • [SmartHunt] Improved version of Hunt to pick targets based on effectiveness (Y-Wings against cruisers, X-Wings against TIEs) Integrated as part of Hunt

ActorInfo (overriding controls over ActionInfo settings)

  • Blocking controls to override automatic AI actions
  • NoAI (Disables AI processing, but does not clear the list - clearing the Action list to be performed separately)
  • CanEvade (switches AI to Evade if under attack)
  • CanRetaliate (switches AI to AttackActor if under attack)
  • HuntWeight (influences the probability of picking targets)
  • NoIdleHunt (Disables AI turning into Hunt mode when idle)

Parser Development

  • Create an ActionFactory and ActionParser class to process strings into ActionInfo.

Imperial Suite

Standardize ActorTypes, Weapons and other properties of the Imperial Navy

Heavy Capital Ships

  • SSD Executor
  • ISD Imperial-class

Medium Ships

  • INT Interdictor-class
  • VSD Victory-class

Light Ships

  • Acclamator-class
  • Arquitens-class
  • Strike cruisers
  • Patrol craft

Fighters

  • TIE/D Defender
  • TIE/A Avenger
  • TIE/X1 Advanced
  • TIE/sa Bomber
  • TIE/IN Interceptor
  • TIE/LN Fighter

Support craft

  • Lambda shuttle

Misc.

  • Documentation

Use object pools for objects with high turnover rates

Some object classes are created and destroyed rapidly.
This can increase performance overhead and run into high rates of garbage collection, which can interfere with the smoothness of the game.

ActorInfo

  • Implement Factory class or equivalent to allow handling of an object pool
  • Implement object pool
  • Prevent inappropriate object reuse by issuing unique IDs
  • Prevent inappropriate object reuse by scoping ActorInfo instances and block disposal until scopes are cleared

ActionInfo

  • Redesign ActionInfo to allow configurable AIs before proceeding
  • Implement Factory class or equivalent to allow handling of an object pool
  • Implement object pool

Game won't start

Hello,
I don't know if the game is still maintained or if there is even anybody out there reading this, but I'll ask anyway.

I am a huge fan of the Battle of Endor & Battle of Yavin by Bruno R. Marcos and was really exited when I discovered this remake recently. I downloaded the zip and followed the steps described in the manual.
Unfortunately the game does not launch but instead throws an error. I'll post the content of the log file below:

Fatal Error occured at 2021-05-26T00:18:18

Message: Die Datei oder Assembly "MTV3D65, Version=6.5.2823.21213, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das angegebene Modul wurde nicht gefunden.

bei SWEndor.Core.Engine..ctor()
bei SWEndor.Globals.InitEngine()
bei SWEndor.Program.Init()

The check.bat returned:
Searching for .NET 4.0
.NET 4.0 install OK!

I am using a Windows 10 System, and have DirectX 12 installed.

If anybody reads this post and knows what to do in order to get the game to work I would be very glad.

Thanks!

Fix erratic sound volume from multiple sound sources

If two (or more) sound sources of the same sound are within hearing range, the volume of the sound becomes erratic as the volume contribution varies between the two sources. This results in unpleasant 'popping' of sounds. This is made obvious if you are close to a capital ship with another capital ship nearby within range.

Sound generation will be performed per frame, instead of per object. Contribution from each object will be aggregated to produce the numbers used for actual generation.

  • Introduce new object for the Sound Pipeline
  • Implement aggregation, then execute by frame

Parser Development

The Parser set of classes is aimed to allow the construction of a game and game objects through the reading of text-based strings. This will allow the game to be saved and recreated (loaded).

Redesign

  • Redesign of ActorInfo and ActorTypeInfo properties: Compartmentalize them into meaningful components. Handling of logic related to a component should be realized within the component's methods.
    • Immutable components go to ActorTypeInfo
      • Engine sound generation [SoundSourceInfo]
      • Debris generation [DebrisSpawnerInfo]
    • Mutable components (which change along the course of the game) go to ActorInfo
      • Explosion generation [ExplosionInfo]
      • Shield generation [RegenerationInfo]
      • Movement (+ dying movement logic) [MovementInfo]
      • Weapons [WeaponSystemInfo]
      • Camera positioning [CameraSystemInfo]

ActorTypeInfo

  • Use Enums in place of Type 'Groups'
    • Replace FighterGroup & TIEGroup with Boolean check IsFighter / Enum
    • Replace StarDestroyerGroup & WarshipGroup with Boolean check IsShip / Enum
    • Replace AddonGroup & other relevant groups with Boolean check IsAddon / Enum
    • Replace ProjectileGroup ---Moved Projectiles to its own class ProjectileTypeInfo---
    • Handle Radar icons and shapes with field properties instead of by Type
  • Creation of functions to populate the properties an ActorTypeInfo class
  • Upgrading the ActorTypeFactory class to generate such an ActorTypeInfo class

ActorInfo

  • Ensure all properties and components of the ActorInfo class can be generated from a parsed list
  • Creation of a parser to populate the properties an ActorInfo class
  • Upgrading the ActorFactory class to generate such an ActorInfo class

ActionInfo

  • Ensure all properties of the ActionInfo class can be generated from a parsed list
  • Creation of a parser to populate the properties an ActionInfo class
  • Upgrading the ActionFactory class to generate such an ActionInfo class

WeaponInfo

  • Ensure all properties of the WeaponInfo class can be generated from a parsed list
  • Creation of the WeaponParser class to populate the properties an WeaponInfo class
  • Upgrading the WeaponFactory class to generate such an WeaponInfo class

GameScenarioBase / Scripting

  • Create a method to load a custom scenario into the scenario list
  • Create a parser to parse game events.
  • Create a parser to parse scenario properties
  • Consider a scripting language / protocol to perform in-game logic and calculations [Scripting.Expressions]

Scenario: Battle of Endor - Basic Tasklist

Checklist for completion of the scenario

Main

  • Basic Introduction Sequence
  • Stage 01 (TIE/LN waves)
  • Cutscene: Death Star Intermission 01
  • Stage 02 (Star Destroyer wave)
  • Stage 03 (TIE/LN / TIE/IN waves)
  • Cutscene: Death Star Intermission 02
  • Stage 04 (Star Destroyer / Devastator wave)
  • Stage 05 (TIE/LN / TIE/IN / TIE/SA waves)
  • Cutscene: Death Star Intermission 03
  • Stage 06 (Executor)
  • Cutscene: Death Star Destruction Sequence

General AI

  • Ensure no issues with Rebel cruiser movements - moving out of position, unhandled AI, mesh clipping
  • Ensure no issues with Empire cruiser movements - mesh clipping, unhandled AI.
  • Ensure AI perform combat near the Rebel fleet and do not stray out of bounds

Player

  • Finalize X-Wing combat options / balancing
  • Finalize Y-Wing combat options / balancing
  • Finalize A-Wing combat options / balancing
  • Finalize B-Wing combat options / balancing
  • Finalize scoring and additional life requirements (current: 5 lives + 1 life per 1000000 points)

Move weapon definitions to files

This has been done for Acclamator, Arquitens and the A-Wing as a test. Seeing that there are no issues with the handling of the weapons, the rest of the weapons can be move that way.

Newer features (e.g. ProjectileWaitBeforeHoming) should be implemented by the Parser before moving Weapons that use them.

Bug report

weapons doesn't work. they spawn the blaster ammo and it gets instantly removed and weapons instantly reloads. secondaries does shoot but so far only Ion has caused damage.

sorry i write here. i don't know where else to.

Scenario: Battle of Yavin - Basic Tasklist

Checklist for completion of the scenario

Main

  • Basic Introduction Sequence
  • Stage 01 (Obstacles)
  • Cutscene: Death Star Entry Pending: Fix Death Star image
  • Cutscene: Flyby Intermission 01
  • Stage 02 (Surface Attack 01)
  • Cutscene: Flyby Intermission 02
  • Stage 03 (Surface Attack 02)
  • Cutscene: Flyby Intermission 03
  • Stage 04 (Surface Attack 03)
  • Cutscene: Flyby Intermission 04
  • Stage 05 (Trench Run) Pending: Finalize patterns according to difficulty
  • Cutscene: Vader Introduction
  • Stage 06 (Vader and Exhaust Port) Pending: Stage completion trigger
  • Cutscene: Falcon Intervention
  • Cutscene: Torpedo vs Thermal Exhaust Port Sequence
  • Cutscene: Death Star Destruction Sequence

General AI

  • Ensure AI does not drive its objects through the Death Star surface

Player

  • Finalize X-Wing combat options / balancing
  • Finalize scoring and additional life requirements (current: 5 lives + 1 life per 1000000 points)

Changes to General Game

  • Configurable Death Camera (Encircling / Static position) for Trench Run
  • Seperate AIBounds to AIMoveBounds and AITargetBounds - an additional control to restrict AI movement.

Implement true decision-making AI

Currently the 'AI' of the game is 'single-tracked'. All AI-enabled objects follow the same checks, and same behavior, and overriding checks are hardcoded. No customization can be done in the AI component except when taken from the ActorInfo and ActorInfoType owner.

This makes AIs that are fundamentally different (e.g. capital ship AI) more difficult to implement.

  • Implement an AI configuration class to store AI-specific data. AI configuration will be carried by the ActorInfo, and used as a context parameter when executing Actions.
  • Target the following AI configurations as test implementations
    • NoAI (does nothing)
    • SlowAI (turns more slowly. Can be used to implement easy AI)
    • IgnoreEverythingAI (moves to destination, ignoring every attack or collision against it. Can be used to implement a capital ship AI)

Rebel Suite

Standardize ActorTypes, Weapons and other properties of the Rebellion

Heavy Capital Ships

  • Home one-type Mon Calamari Cruiser
  • Liberty-type Mon Calamari Cruiser
  • Profundity-type Mon Calamari Cruiser

Medium Ships

  • Nebulon-B Frigate
  • Assault Frigate

Light Ships

  • CR90 Corvette
  • CR92 Corvette
  • GR75 Transport

Fighters

  • YT-2400
  • YT-1300
  • X-Wing
  • A-Wing
  • Y-Wing
  • B-Wing
  • Z-95

Misc.

  • Documentation

Implement Scenario Scripting

The use of scenario scripts is the first step towards possible user-generated content without modifications to the core engine.

As far as possible, the script engine should offer a conducive platform for people to write their own scenarios in a way that can be safely executed by the engine.

  • Implement Scripting
    • Link to script functions to internal functions Note: all functions are subject to change at this stage!
  • Exception handling
    • Parse errors with references to line numbers
    • Evaluation errors
  • Create test scenarios (~ 5-10 minute battles) as test beds to run the script engine.
  • Documentation of syntax and function API

Scenario: Escape from Hoth - Basic Tasklist

Checklist for completion of the scenario

Main

  • Basic Introduction Sequence
  • Stage 01 (Transport Escort)
  • Cutscene: Transports prepare to leave
  • Stage 02 (Outmaneuver TIEs and attempt hyperspace) Pending: Finalize bounds, Stage completion trigger
  • Cutscene: Transition to Asteroid Field
  • Stage 03 (Asteroid Field 01)
  • Cutscene: Transition to Large Asteroid
  • Stage 04 (Asteroid Field 02)
  • Cutscene: Transition ???
  • Stage 05 (???)
  • Cutscene: Transition ???
  • Stage 06 (???)
  • Cutscene: Escape

General AI

  • To be populated once main sequence design is complete

Player

  • Finalize Falcon combat options / balancing
  • Finalize scoring and additional life requirements (current: 5 lives + 1 life per 1000000 points)

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.