-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathconfig_basic.py
More file actions
135 lines (111 loc) · 3.37 KB
/
config_basic.py
File metadata and controls
135 lines (111 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import pygame
WIDTH, HEIGHT = 770, 770 # 环境大小
MAZEWIDTH, MAZEHEIGHT = 11, 11
assert WIDTH % MAZEWIDTH == 0, "MAZEWIDTH must divide WIDTH"
assert WIDTH % MAZEHEIGHT == 0, "MAZEHEIGHT must divide HEIGTH"
GRID_SIZE = WIDTH / MAZEWIDTH # 迷宫的网格大小
# 颜色定义
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
GRAY = (100, 100, 100)
YELLOW = (255, 255, 0)
"""-----------------GAME SETTING-----------------"""
EPSILON = 0.01
ROTATION_SPEED = 2
BULLET_SPEED = 1
BULLET_MAX_BOUNCES = 6
BULLET_MAX_DISTANCE = 300
MAX_BULLETS = 6
BULLET_COOLDOWN = 300
STATIONARY_EPSILON = 3
# Map setting
USE_OCTAGON = True # 八角笼斗
# Tank control setting
ROTATION_DEGREE = 3 # -> 2, Right, negative, || 0, left, positive
TANK_SPEED = 10 # -> 2, Forward, positive || 0, Backward, negative
# Tank Setting
TANK_WIDTH = 30
TANK_HEIGHT = 24
two_tank_configs = {
"Tank1": {
"team": "TeamA",
"color": GREEN,
"mode": "human",
"keys": {
"left": pygame.K_a,
"right": pygame.K_d,
"up": pygame.K_w,
"down": pygame.K_s,
"shoot": pygame.K_f,
},
},
"Tank2": {
"team": "TeamB",
"color": RED,
"mode": "human",
"keys": {
"left": pygame.K_LEFT,
"right": pygame.K_RIGHT,
"up": pygame.K_UP,
"down": pygame.K_DOWN,
"shoot": pygame.K_SPACE,
},
},
}
"""----------------REWARD CONFIG----------------"""
# We should not post too much constraint/reward on the agent, let it learn by itself
# Victory Reward
HIT_PENALTY = -50 # punishement of being hit
TEAM_HIT_PENALTY = -5 # punishment of hitting teamate
OPPONENT_HIT_REWARD = 50 # reward of hitting enemy
VICTORY_REWARD = 200
# Wall Hit Penalty
WALL_HIT_THRESHOLD = 0
WALL_HIT_STRONG_PENALTY = 0
WALL_HIT_PENALTY = 0
# Stationary Penalty
STATIONARY_PENALTY = 0
MOVE_REWARD = 0
# BFS Related Reward
BFS_FORWARD_REWARD = 0
BFS_BACKWARD_PENALTY = 0
BFS_PATH_LEN_REWARD = 0
BFS_PATH_LEN_PENALTY = 0
# Bullet Trajectory Reward/Penalty
TRAJECTORY_HIT_REWARD = 40
TRAJECTORY_DIST_REWARD = 10 # Base reward for good aim
TRAJECTORY_DIST_PENALTY = -10 # Base reward for good aim
TRAJECTORY_FAR_THRESHOLD = 300 # Distance threshold for penalty
TRAJECTORY_DIST_THRESHOLD = 200 # Distance threshold for reward
# Dodge Reward
DODGE_FACTOR = 0.01 # Reward for dodging bullets
# Aim Reward
TRAJECTORY_AIM_REWARD = 0 # Reward for aiming at target
AIMING_FRAMES_THRESHOLD = 17
#Bullet Reward
BULLET_AWAY_PENALTY = 0.02
BULLET_CLOSE_REWARD = 0.01
DISTANCE_CANCEL_THRESHOLD = 100
# Action Consistency Reward
ACTION_CONSISTENCY_REWARD = 0 # Reward for maintaining consistent actions
ACTION_CHANGE_PENALTY = 0 # Small penalty for changing actions frequently
# Rotation Penalty
ROTATION_PENALTY = 0 # Penalty for excessive rotation
ROTATION_THRESHOLD = 20 # Total rotation before penalty (in degrees)
ROTATION_RESET_DISTANCE = 50 # Distance to move before resetting rotation counter
# Control Penalty
CONTROL_CHANGE_PENALTY = 0
CONTROL_CHANGE_THRESHOLD = 0.5
# Buff & Debuff
BUFF_ON = True
DEBUFF_ON = True
# Set 512 if infinite life, set NONE in inference
TERMINATE_TIME = None
"""-----------KEYBOARD SETTING-----------"""
VISUALIZE_TRAJ = False
RENDER_AIMING = True
RENDER_BFS = True
"""-----------VISUALIZATION-----------"""
VISUALIZE_EXPLOSION = True