UFRN-URNAI / urnai-tools

A modular Deep Reinforcement Learning library that supports multiple environments, made with Python 3.6.
Apache License 2.0
5 stars 8 forks source link

Create state representation class for StarCraft 2 races #73

Closed alvarofpp closed 1 month ago

alvarofpp commented 9 months ago

From the class created in issue #72, it is necessary to create the state classes for the Protoss, Terran, and Zerg races.

Suggestions:

RickFqt commented 6 months ago

In the original sc2 state classes for urnai, there are several and different implementations. In our case now, are we just going to have these three classes for state representation in sc2? Or are we going to make more state classes based on these three? For example, imagine a developer wants to create a new state representation for the Terran race that uses some specific way of representing the "observation" of the environment. Should they make this new class inherit from StateBase or from TerranState?

alvarofpp commented 6 months ago

In our case now, are we just going to have these three classes for state representation in sc2?

Yes.

Or are we going to make more state classes based on these three?

Yes too, but that will be another issue.

Should they make this new class inherit from StateBase or from TerranState?

This depends on what the person wants to do. If it just wants to add to the states already mapped in TerranState, it will inherit from TerranState. But if it wants something different from TerranState, then it will inherit from StateBase.

RickFqt commented 6 months ago

I'm trying to use the original sc2 state classes as a base, but it seems that every state implemented there uses the methods get_my_units_amount and get_units_by_type at some point, which are imported here. Should I implement these methods in the same file of the state classes? This question also applies to the other methods imported, if they are eventually necessary.

alvarofpp commented 5 months ago

Should I implement these methods in the same file of the state classes?

I'd implement it too, it's a great time to review adjacent code.