Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Utility AI - framework and Editor [wip] #6323

Draft
wants to merge 38 commits into
base: master
Choose a base branch
from

Conversation

Scoppio
Copy link
Collaborator

@Scoppio Scoppio commented Dec 28, 2024

Development of a Utility AI framework to be implemented with a bot (preferably on top of princess, preferably creating a new way to have her make decisions).

This PR currently only implements a few considerations and an AI Editor, this PR intends to allow people to test and evaluate the usability of the AI Editor.


TODO: More information on the Utility AI, how it works, how it integrates with Princessm etc.

Copy link

codecov bot commented Dec 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 28.30%. Comparing base (50f43e9) to head (c0f0ad7).
Report is 9 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #6323      +/-   ##
============================================
- Coverage     28.53%   28.30%   -0.24%     
- Complexity    14091    14092       +1     
============================================
  Files          2792     2844      +52     
  Lines        273739   275997    +2258     
  Branches      48494    48679     +185     
============================================
+ Hits          78106    78109       +3     
- Misses       191650   193906    +2256     
+ Partials       3983     3982       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

damageCache.clear();
}

public abstract double getBonusFactor(DecisionContext<IN_GAME_OBJECT, TARGETABLE> lastContext);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'lastContext' is never used.

public interface Intelligence<IN_GAME_OBJECT, TARGETABLE> {

void update(Intelligence<IN_GAME_OBJECT, TARGETABLE> intelligence);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'intelligence' is never used.
void addDecisionScoreEvaluator(Decision<IN_GAME_OBJECT, TARGETABLE> scoreEvaluator);
List<Decision<IN_GAME_OBJECT, TARGETABLE>> getDecisions();
DecisionMaker<IN_GAME_OBJECT, TARGETABLE> getDecisionMaker();
double getBonusFactor(Decision<IN_GAME_OBJECT, TARGETABLE> scoreEvaluator);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'scoreEvaluator' is never used.
@Scoppio Scoppio force-pushed the feat/tinkering-princess-ai branch from 82be31d to 572a2a2 Compare December 30, 2024 02:30
}

public static DefaultCurve fromCurve(Curve curve) {
if (curve instanceof LinearCurve) {

Check notice

Code scanning / CodeQL

Chain of 'instanceof' tests Note

This if block performs a chain of 6 type tests - consider alternatives, e.g. polymorphism or the visitor pattern.
@Scoppio Scoppio force-pushed the feat/tinkering-princess-ai branch from 2f32e50 to 448b792 Compare December 31, 2024 02:34
@Scoppio Scoppio added Princess/AI ACAR Any Issues related to the ACAR (Abstract Combat Auto Resolve) System labels Jan 14, 2025
Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

var splitPosition = hex.length() / 2;

int x = Integer.parseInt(hex.substring(0, splitPosition)) - 1;
int y = Integer.parseInt(hex.substring(splitPosition)) - 1;

Check notice

Code scanning / CodeQL

Missing catch of NumberFormatException Note

Potential uncaught 'java.lang.NumberFormatException'.

int x = Integer.parseInt(hex.substring(0, splitPosition)) - 1;
int y = Integer.parseInt(hex.substring(splitPosition)) - 1;

Check notice

Code scanning / CodeQL

Missing catch of NumberFormatException Note

Potential uncaught 'java.lang.NumberFormatException'.
return;
}
int unitID = Integer.parseInt(unitIdString);

Check notice

Code scanning / CodeQL

Missing catch of NumberFormatException Note

Potential uncaught 'java.lang.NumberFormatException'.
var splitPosition = hex.length() / 2;

int x = Integer.parseInt(hex.substring(0, splitPosition)) - 1;
int y = Integer.parseInt(hex.substring(splitPosition)) - 1;

Check notice

Code scanning / CodeQL

Missing catch of NumberFormatException Note

Potential uncaught 'java.lang.NumberFormatException'.

int x = Integer.parseInt(hex.substring(0, splitPosition)) - 1;
int y = Integer.parseInt(hex.substring(splitPosition)) - 1;

Check notice

Code scanning / CodeQL

Missing catch of NumberFormatException Note

Potential uncaught 'java.lang.NumberFormatException'.
return intelligence;
}

public TWWorld getWorld() {

Check notice

Code scanning / CodeQL

Missing Override annotation Note

This method overrides
Agent<Entity,Entity>.getWorld
; it is advisable to add an Override annotation.
persistDataToUserData();
deleteUserTempFiles();
} catch (IOException e) {
logger.error(e, "Could not load data from file: {}", zipInput);

Check warning

Code scanning / CodeQL

Unused format argument Warning

This format call refers to 0 argument(s) but supplies 1 argument(s).
return 0;
}

public TreeSet<RankedPath> rankPaths(List<MovePath> movePaths, Game game, int maxRange,

Check notice

Code scanning / CodeQL

Missing Override annotation Note

This method overrides
PathRanker.rankPaths
; it is advisable to add an Override annotation.
return this;
}

public DebugReporter append(Object s) {

Check notice

Code scanning / CodeQL

Confusing overloading of methods Note

Method DebugReporter.append(..) could be confused with overloaded method
append
, since dispatch depends on static types.
return finalScore;
}

public List<Consideration<IN_GAME_OBJECT, TARGETABLE>> getConsiderations() {

Check notice

Code scanning / CodeQL

Exposing internal representation Note

getConsiderations exposes the internal representation stored in field considerations. The value may be modified
after this call to getConsiderations
.
return 0;
}

public double getBonusFactor(RankedPath rankedPath) {

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'rankedPath' is never used.
return id;
}

public List<Decision<A, B>> getDecisions() {

Check notice

Code scanning / CodeQL

Exposing internal representation Note

getDecisions exposes the internal representation stored in field decisions. The value may be modified
after this call to getDecisions
.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ACAR Any Issues related to the ACAR (Abstract Combat Auto Resolve) System Princess/AI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant