SquirrelJME/SquirrelJME

View on GitHub
assets/developer-notes/stephanie-gawroriski/2015/06/12.mkd

Summary

Maintainability
Test Coverage
# 2015/06/12

***DISCLAIMER***: _These notes are from the defunct k8 project which_
_precedes SquirrelJME. The notes for SquirrelJME start on 2016/02/26!_
_The k8 project was effectively a Java SE 8 operating system and as such_
_all of the notes are in the context of that scope. That project is no_
_longer my goal as SquirrelJME is the spiritual successor to it._

## 10:27

Perhaps for help files, I will use ZIP instead since it would be an easier
format to use and would not require anything fancy when it needs to be
accessed. There is something called JavaHelp 2.0, so I will have to see how
that works out.

## 10:38

Actually the JavaHelp 2.0 stuff can be embedded into my packages, I just need
to create TOCs and such in my hairball builder in the future.

## 10:41

The one thing to figure out though, is internationalization. I suppose all the
help documentation should be in English anyway, since that is the primary
technical language of Earth. It is also the only language I know best. The
helpset and other stuff could be auto-generated by hairball however so it
reduces the amount of work that is required.

## 15:20

Looks like for my set of Java 3D classes, I am missing a whole bunch. Appears
that the com.sun ones are required. Well I should perhaps perform a search
before hand to see. Seems not.

## 15:58

I could also pull in JSR 231, which is Java OpenGL bindings. Those might be
useful. Of course I am going to have a generic graphics stack which all of my
3D library will be using, that way it is write one graphics layer and not
worry about anything. The one graphics layer would probably be Vulkan itself,
although some older hardware would be stuck with software rendering rather
than full 3D support. Perhaps there can be two backends, a fixed function for
more limited hardware and the vulkan interface for new hardware.

## 17:26

Appears my repository is going to be a bit more bloated with all of these code
imports.

## 18:47

Thinking about simplifying NARF and then interlacing it with the core compiler
support. The core compiler support will have an emulation system and a state
machine. NARF could use that when decoding. Simple CPUs such as PowerPC are
easy, however stuff such as Java byte code is context sensitive. So NARF will
essentially run the entire function taking as many paths as possible to
determine what it does. There will have to be verified Java bytecode anyway to
make sure things are to the spec.

## 22:04

For FreeTanx, I have a damage chart from BattleTanx, however the inputs are in
integral values. So I need to figure out how I can calculate the health of
each tank and the actual damage that each weapon does in order to be accurate
enough. The Mototank is the weakest in terms of health and does the lowest
amount of damage. It takes 150 bullets to destroy a Goliath tank. So that will
need to be the highest number of the output that I have. I cannot use the
Rhino shield because I have an unknown value. So I should first evaluate the
damage of the mototank bullets relative to the other numbers. I suppose each
bullet will be 1 damage. So, I suppose the health of the Goliath Tank should
be 300. Or better yet, what if I take the inverses of all the damages, then I
can reverse correlate the health of each tank and the damage of the weapons.

## 22:21

Believe I am making progress. Taking the mototank damage with the goliath
amount I get no fractions when it comes to damage. Ah yes, I have figured out
the health of everything, I just need to figure out the numbers more to remove
any fractions. The M1A1 takes 3 shots to destroy with a standard cannon, using
the multiplier I get 50 which the amount of Mototank bullets it takes to
destroy.

## 22:53

So now that I have the health of most things, the only thing I need to figure
out is how much the Rhino's sheild reduces damage. Another thing I need to
figure out is how much damage the Inferno weapon does, that is a rather
difficult weapon to measure in terms of damage due to the dynamic nature. I
believe I have been lucky when I previously measured the damage. The FLP-E
tank takes 16 hits (a guess really) to destroy with a flamethrower. The FLP-E
is also only slightly weaker (health wise) than most of the tanks. So if it
takes 16 hits and that tank has 240 health then the damage would be 15.

## 23:03

Now to figure out how strong the Rhino shield is. The rattler is the next up
stronger from the moto machine gun and that can actually damage it when the
shots hit the shield. The rattler does 12 damage and it takes 102 shots to
destroy the Rhino via the shield. Multiplying gives me 1224. The rattler does
double the damage the mototank does. So that means 1224 divided by 2, would be
612\. So the Rhino sheild should have 3672 health. The goliath attack does 150
damage then the number of hits is hopefully 9. Actually forget all that, the
health of the Rhino's sheild is 1224. That calculates correctly to 9.

## 23:21

Now that I have that info, I can start to synthesize JSON data which describe
objects and such.

## 23:33

Another thing I wonder though, are bullets hitscan weapons? With a quick test
in game, bullets are not hitscan weapons. So this is quite accurate. The next
thing I would have to do after this is figure out the speed of objects and
time them with a VCR, encode them to MPEG, then get an exact frame count. And
one last thing is to see if the laser weapon is also a hitscan. I believe the
laser is a hitscan, since it appears to be really fast. Perhaps I need a
longer level to try it out on. The laser is a hitscan weapon, although it has
a limited distance. The escape from berlin level is quite long. The plasma
weapon also disappears after a certain distance traveled also.