rtsairesearch / istrategizer Goto Github PK
View Code? Open in Web Editor NEWAI engine for Real-Time strategy games
Home Page: http://rtsairesearch.wordpress.com/
License: Apache License 2.0
AI engine for Real-Time strategy games
Home Page: http://rtsairesearch.wordpress.com/
License: Apache License 2.0
Deploy Army (ArmySize)
Enemy in line of sight
Win Game
All enemy entities are destroyed
Now we just get the distance for the first base found in the game. We need to handle case that there are many bases
Number of attacking units <= ArmySize
Need to get MaxPopulation from the game
CellFeature::Null().To(_planstepParams);
Use Qt treeview widget to visualize the current plan expansion and execution
Make Case Visualizer use Enums[*] for engine IDs instead of using the ID Lookup table, and make such table generate only Game dependent IDs
Including making TechTree cloneable and can run offline
Destroy Entity (EntityClassID)
Entity destroyed
Resource Available
Amount: {Set of all required amounts by units, researches}
Check this comment
This action will be given an entity class id (not entity id) to move for a location
Provide overload for each condition checking
SuccessConditionSatisifed(const RtsGame* pGame);
..
etc..
Decide how the micromanagement will be integrated with OLCBP and what are its main components
Consider Workers, build areas, production resources (minerals, etc..) as sharable and each action should get the onwership of each resource during usage
The case revision algorithm is very simple and trivial, that can't handle issues like this:
Consider the matched cases CaseA, CaseB, CaseC appears in the same sequence in the Case base where CaseA is the first case.
The following is the cases performance (Success/Trial)
CaseA (1/1), CaseB(1/2), CaseC(1/3)
The cases above are equal in case-relevance, and the retriever will judge which one to return based on their performance.
Consider the retriever first return CaseA, and CaseA fail.
Reviser will update its performance to be CaseA (1/2) which is equal to CaseB (1/2)
When we try to get another case to match our goal, the retriever will find that the best case to retrieve is the case with performance (1/2), since CaseA and CaseB are equal in the performance and differ in the the order in the case-base list
The retriever will get CaseA as it is the first to appear in the case-base
This behavior is buggy, somehow we should try CaseB and not to try CaseA again, at-least for this game.
The success conditions of this goal is that the entity is available for training/building from tech tree
IStrategizer solution and IStrategizerClient should be modified in their settings, to look at the new places of the Serialization libs
VM need:
Update the setup wiki
Make it super easy for new devs to start development
This method should replace all these methods
AdaptWorkerForBuild
AdaptBuildingForTraining
AdaptAttacker
AdaptTargetEntity
AdaptEntityToMove
The method signatures will be like this
TID GetEntityObjectId(entityClassId, rankedStates)
TID GetEntityObjectId(entityClassId) // i don't care about the state just get the first unlocked entity
For the states, the class should provide default rankedStates so users can use them directly without defining new states:
pAdapter->GetEntityObjectId(_attackerId, AdapterEx::AttackerStates)
The success conditions is that the research is available to be done
Currently there is a bug in the planner that it fail to execute parallel plans
15 case or more with all required actions to play a complete game
Logging should be available to all engine objects .. and it should be directed to the console and a log file at the same time
Scenario:
CaseA with the following plan build steps: Build B1, Build B3, Build B3
CaseB with the following plan build steps: Build B1, Build B4, Build B6
Where B1, B2, B3, etc.. is a building type.
Output::
The engine has
2 buildings of type B1
1 building of type B3
1 building of type B4
Problem:
The engine shouldn't have built another B1 since B1 already exist and was built, it should have deduced this and mark B1 as succeeded without executing it and proceed to Build B3
Solution:
The planner should deduce the post-conditions of a give plan, and on replacing a current plan with another, actions should be evaluated for know which post condition are satisfied so as not to re execute that action that satisfy this post-condition again.
Example:
Post conditions of CaseA are: having 1 B1 and 2 B3
Post conditions of CaseB are: having 1 B1, 1 B4 and 1 B6
On applying CaseB plan after failure of CaseA, we will find that they intersect in 1 B1 which is satisfied, so we continue expansion and execution to satisfy B4 and B6 steps.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.