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.


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.


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.


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.


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.


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.


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


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.


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.


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.


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.


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.


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


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.