summaryrefslogtreecommitdiff
path: root/roadmap.html
blob: d3666ec750ac1ec4be679e6fdc63a8feeb1dd4ce (plain)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<link rel="stylesheet" href="/index.css">
		<title>Physics for Games</title>
		<link rel="shortcut icon" href="/favicon/favicon.ico" type="image/x-icon">
		<meta name="description" content="A place to learn all about real-time physics simulations through descriptions, code snippets, and example programs all written in C++ and OpenGL.">
		<meta name="og:description" content="A place to learn all about real-time physics simulations through descriptions, code snippets, and example programs all written in C++ and OpenGL.">
	</head>
	<body>
		<header>
			<h1><a title="physicsforgames.com" href="/">Physics for Games</a></h1>
		</header>
		<main>
		<nav>
		<ul class="outer-tree">
			<li><a href="/">Introduction</a></li>
			<li>
				<span>&#127936;<span>2D</span></span>
				<ul class="inner-tree">
					<li><label>Rigidbody</label></li>
					<li><a title="/2d/rigidbody/rigidbody_1.html" href="/2d/rigidbody/rigidbody_1.html">Linear Forces</a></li>
					<li><a title="/2d/rigidbody/rigidbody_2.html" href="/2d/rigidbody/rigidbody_2.html">Rotational Forces</a></li>
					<li><a title="/2d/rigidbody/rigidbody_3.html" href="/2d/rigidbody/rigidbody_3.html">Collisions</a></li>
					<li><label>Collisions</label></li>
					<li><a title="/2d/_collisions/rectangle_rectangle.html" href="/2d/_collisions/rectangle_rectangle.html">Rectangle-Rectangle</a></li>
					<li><a title="/2d/_collisions/polygon_polygon.html" href="/2d/_collisions/polygon_polygon.html">Separating Axis Theorem</a></li>
					<li><label>Softbody</label></li>
					<li><a title="/2d/softbody/softbody_1.html" href="/2d/softbody/softbody_1.html">Springs</a></li>
					<li><a title="/2d/softbody/softbody_2.html" href="/2d/softbody/softbody_2.html">Springy Rectangle</a></li>
				</ul>
			</li>
			<li>
				<span>&#127776;<span>3D</span></span>
				<ul class="inner-tree">
					<li><label>Rigidbody</label></li>
					<li><a title="/3d/rigidbody.html" href="/3d/rigidbody.html">Rigidbody in 3D</a></li>
				</ul>
			</li>
			<li>
				<span>&#128295;<span>WebAssembly</span></span>
				<ul class="inner-tree">
					<li><a title="/intro/intro.html" href="/intro/intro.html">Introduction</a></li>
				</ul>
			</li>
			<li>
				<span>&#128712;<span>About</span></span>
				<ul class="inner-tree">
					<li><a title="/roadmap.html" href="/roadmap.html">Roadmap</a></li>
				</ul>
			</li>
		</ul>
		</nav>

<style>
  section ul {
	  list-style: none;
	  padding-left: 0;
  }
  section li {
	  position: relative;
	  padding-left: 1.5em;  /* space to preserve indentation on wrap */
  }
  section li:before {
	  content: '';
	  position: absolute;
	  left: 0;
	  width: 1rem;
	  height: 1rem;
  }
  section ul {
	  list-style: none;
  }

  section ul li:before {
	  content: '-';
  }

  .done {
	  color: green;
  }

  .halfway {
	  color: orange;
  }

  .failed {
      color: red;
  }

  .abandoned {
      color: grey;
  }

  section ul li.done:before {
	  content: '✓'
  }

  section ul li.halfway:before {
	  content: '⚠'
  }

  section ul li.failed:before {
      content: '✗'
  }
</style>
<article>
  <section>
    <h1>October 2021: Get back at it. 3D first</h1>
    <p>
      If I'm being honest, I was busy moving to Canada the last two months, so I hardly made any headway at all in 
      the realm of physics engine work. Now that I am settled, it is time to get back on the horse! My goal is to
      have a believable 3D physics engine (rigidbody mostly) by the end of the year. From there, I will figure out
      what I want to do next.
    </p>
    <ul>
      <li>3D Rigid Body Physics</li>
    </ul>
  </section>
  <section>
    <h1>July 2021: 2D loose ends and 3D headway</h1>
    <ul>
      <li class="done">Finish SAT Collision Info (very close)</li>
      <li class="halfway">2D rigidbody explanation 3</li>
      <li class="failed">3D Rigid Body Collisions</li>
      <li class="failed">ZIP file creator for downloads</li>
      <li class="failed">Explanation of Quaternions</li>
    </ul>
    <p>
      The last two months went almost as planned. I think I misjudged how long and how much brainpower it would
      take me to write explanations for all of these things. A classic engineer mistake. We see writing,
      and we think, "Easy, I can do that." And I usually can, but I am a bit rusty as of late. Additionally, this
      writing involved a lot of diagrams and math equations that I struggled to put into HTML. I even had to learn
      to make some simple drawings in gimp, which was a bit of a hurdle.
      <br /><br />
      That being said, I am fairly configdent that I can finish the above items in the month of July (maybe minus the
      quaternion work, but we will see). To get my confidence up, I am going to begin with the ZIP file creator for
      downloading individual projects. That will definitely be worthwhile.
    </p>
  </section>
  <section>
    <h1>May/June 2021: More Collisions</h1>
    <ul>
      <li class="halfway">SAT Collisions for Convex Polygons with Explanation</li>
      <li class="done">2D rigidbody physics demo + explanation 1</li>
      <li class="done">2D rigidbody physics demo + explanation 2</li>
      <li class="halfway">2D rigidbody physics demo + explanation 3</li>
      <li class="done">Remove (or hide) ellipse collision pages for now</li>
      <li class="done">3D scene setup</li>
      <li class="abandoned">3D scene basic physics with spheres bouncing around a scene</li>
      <li class="abandoned">Pill Collisions</li>
    </ul>
    <p style="font-size: 18px;">
	  Obviously, the month of April did not go as planned. I got caught up with a number of tasks that I couldn't handle,
      namely, the pill collisions. These, as I discovered, were quite unfeasible and involved a lot of complex maths
      that I didn't quite yet understand. They are also unreasonable for game development's sake, so I will ditch that
      effort and focus on doing other things. This, of course, is not time entirely wasted, as I now I have a somewhat
      better understanding of why ellipses (and by extension ellipsoids, although I am not entirely sure of this). I should
      <i>instead</i> try to figure out the intersection using pills, not ellipses. Pills are simply 2D shapes made of a
      rectangle in the middle and two half-circles at either ends. This is a far less expensive collision to calculate.
      <br/><br/>
      I also failed when it came to getting a good physics collision system going. This stemmed from a general misunderstanding
      of moment of inertia and how it can properly be implemented for each shape. I think I am getting a better grip on it now,
      however.
      <br/><br/>
      And that brings me to May/June. I am combining these two months because I am quite busy in May with family stuff,
      and hence won't be able to give my full attention to the project. That being said, as a high-level goal, I hope to
      get some more 2D collisions going, and maybe move onto 3D fairly soon. For 3D, I would simply like to get the physics
      simulation up and running with simple objects (spheres, cubes, etc.). From there, I want to begin exploring more complex
      physics simulation topics like oct-trees, multiple collision resolution, etc. We will see what happens, but I am optimistic,
      so long as I stay the course.
      <br/><br/>
      <i>Edit:</i> I am going to focus on SAT collision and AABB collision detection going forward for this month. In addition,
      I am going to finish the descriptions/demos for regular rigidbody collision. Afterwards, if I have time, I will move onto
      3D collisions.
	</p>
  </section>
  <hr/>
  <section>
	<h1>April 2021: Ground Work and Initial Collisions</h1>
	<ul>
	  <li class="done">Orthographic rendering basics</li>
	  <li class="done">Uniform build Process for WebAssembly</li>
	  <li class="done">WASM Framework with simulation loop</li>
	</ul>
	<h2>2D Collisions with Descriptions</h1>
	<ul>
	  <li class="halfway">Ellipse-Line Collision</li>
	  <li class="failed">Ellipse-Ellipse Collisions</li>
	  <li class="failed">Ellipse-Circle Collisions</li>
	  <li class="failed">Ellipse-Square Collisions</li>
	  <li class="done">Rectangle-Line Collisions</li>
	  <li class="halfway">Circle-Line Collisions (Redo)</li>
	  <li class="failed">Rectangle-Circle Collision</li>
	</ul>
	<h2>Brief Wasm Series</h1>
	<ul>
	  <li class="halfway">Getting started with WASM docs</li>
	  <li class="halfway">Wasm examples</li>
	</ul>
	<p style="color: black; font-size: 18px;">
	  Everything above has a due date of <b>April 30th, 2021</b>. None of it is that hard, so this should be a very doable timeline.
	</p>
  </section>
</article>
		</main>
	</body>
</html>