Schwartz Engine

Schwartz Engine

About This

I develop Android Apps and games. I play board games and I am an experienced GM in warhammer Fantasy Role Play (1st and 2nd Ed). I am also painting and sculpting miniatures.
Yes that's right I am a freak - No mistake there. I am using this media to track my work and organise it a little.

Holiday At last, refactoring as therapy...

AppsPosted by Carsten Schwartz Jul 08, 2018 12:26
After a period in and out of the job market I have finally landed a job at a company I hope is more credible/stable than the other jobs I have had in the last year. So now I am on official Vacation at last and gathering strength at home with the family.

So I just sat down to look at my Asteroids Clone and discovered some things that could be improved in the code. To many hard coded values and a slight little problem where the spaceship could be smashed up even before the game started.

Try the new improved Asteroid Clone!

It is satisfying to be able to clean up and make corrections to the code relatively fast event though I have not touched it for a while.



As I say, Good Code is defined by answering this question:

Would you give the guy who wrote this a beer after maintaining it?




  • Comments(0)//theengine.schwartzengine.com/#post27

Not Big Enough I Say!

AppsPosted by Carsten Schwartz May 28, 2018 19:08
I did it again, as I was driving home in my car I wondered why the hugest of the asteroids in my clone of the Atari Asteroids Game from 1979 not just pushed the smaller Asteriods out of the way on impact, I had a revelation!




The mass of an Asteriod is not based of a one dimensional diameter length like metric or a two dimensional area like metric for that matter. Mass is mass and it is volume based, so away I went an added a cubicSize member to my asteroid class which is size*size*size, where size is the diameter of the smallest circle surrounding the center of mass of the asteroid. And behold it looks more like the effect i was after, try it out:

https://schwartzengine.com/AsteroidClone/index.html

What a bummer! Using a one dimensional measure for volume, I must have been to eager to see the results of the collision algorithm when I implemented it. A typical trait when you make graphical software. It also goes to show that the human mind works in mysterious ways when it comes to trouble shooting and problem solving :-)

Software development is still a young craft and not easy ;-)
















  • Comments(0)//theengine.schwartzengine.com/#post25

Reclaiming my Unit Testing!

AppsPosted by Carsten Schwartz May 02, 2018 20:16
This evening I had to make a new unit test for one of the classes in my A DUNGEON HORROR DEED editor, for a while Eclipse had spat some kind of IDE NULL pointer exception in my face every time I tried to run a test. I have not done anything about since the classes under test not have changed.

But now it was urgent, so away I went to the web and was lucky to find a couple of good suggestions on a Stack Overflow entry. I used this one that specified what to do in the Eclipse IDE:

- Go to help
- Select: Install New Software
- In the Work with text box type: Juno
- Expand Programming languages in the tree view
- Select: Install Eclipse Java Development Tools
- Install it
- Restart

And it worked in first try:


So now I can make my testing count again!

As an aside I can mention that the Dice class that have methods I have used since 1989 when I made a program for rolling new Characters for Warhammer Fantasy Roleplay have a method for rolling a specific range from (and including) a minimum integer value to a maximum. I have never tried what happens if you give the method a minimum that is larger than the maximum. So of course I made a test where I tried this. I expected the method to switch the two parameters and still deliver a range roll from (and including) the lowest to the highest of the two values.


And of course it crashed, away I went an refactored the method to switch the values if the minimum was largest and now the test succeeds. And then I added some explanatory java doc as well:

























  • Comments(0)//theengine.schwartzengine.com/#post23

Enhancement of the ADHD Level editor

AppsPosted by Carsten Schwartz Apr 12, 2018 21:53
Last night it occurred to me that the editor I have made for A DUNGEON HORROR DEED not is quite up to speed regarding communicating that the map you are editing has changed...

So the gloves went of and I implemented the classic 'hasChanged' flag used to indicate if your document/map has changed by adding an asterisk after the title of the editor window.


I also remembered that I had made a back door to mod the ADHD game. If you make a set of maps where one of them is named Gobbo Town and make a world map file from these called ADHDFakeMaps and copy that to where your save the progress of the game, then you will start in that map when starting a new game. I sat and used the Editor to create a little fake map level to use the back door and realized the the editor is well suited for this work, but the game will act a little strange if you try to load a save game from the original embedded map when you use the back door. So I have to remember that if I am modding. ;-)

As an aside I had to make a little extra features regarding saving. The Save... menu item worked as a Save As..., so I have implemented a true Save that saves with out questions. Also an opt to overwrite if an existing file is selected during Save As... was needed to make a proper editor, but I think it is OK now.. :-)

This is also added as part of the Game manual on schwartzengine.com, download the editor here.













  • Comments(0)//theengine.schwartzengine.com/#post22

A classic Mistake!

AppsPosted by Carsten Schwartz Apr 07, 2018 22:19
I just implemented a classic elastic collision formula to get a semi realistic collision modeling amongst the asteroids in my take of the 1979 Asteroids game.


This is the formula where the u vectors are the speeds before the collision, the v vectors the speeds after the collision and the m numbers are the masses.

I had implemented this correctly, but just made a tiny little mistake, the distance needed between two objects for them not to touch was calculated a little to small, causing the asteroids to linger almost on top of each other when colliding. After fixing this it looks a little better. Try it out HERE! :-)




  • Comments(0)//theengine.schwartzengine.com/#post21

It Lives, It Lives!

AppsPosted by Carsten Schwartz Apr 03, 2018 07:34
Yes that's rigth My TF700T Tablet Lives Once Again!

Recently my beloved tablet has gotten slow again even though I have rooted it and installed a custom rom that made it speedy. You cannot just install any App once you have installed a custom rom. I learned this the hard way. After installing som different browsers because I was tired of waiting on the slow Chrome experience, the tablet started rebooting at random and claiming that the start screen had stopped - Very Annoying!


I started thinking it was time to boot into recovery and reinstall the custom rom from the zips on the tablet. But I needed a good fast browser that had some kind of add/tracker blocking to give me a fast and seamless user experience. I fell over the Brave browser and away I went; wiped the tablet, installed the custom room from recovery and installed Brave as an experiment.

It is by far the best browsing experience I have had for a long time. Many sites pester you with commercials popups and all sort of time wasting crap, this browser simply ignores that and shows you the content instead of the waste. I highly recommend this product, I am not payed to write this, It is simply a quality product :-)

As an aside to all this glorification of a newly reborn tablet, I had to do it all over again because:

You must remember to:

- Select Do not auto update Apps in the settings of Google Play.
- Disable all location reporting
- Disable all usage and feedback reporting

I forgot it in the first run but quicly discovered that the tablet got slower, because it updated the installed optimized Apps. And wasted time using the GPS and the internet for wasteful purposes.











  • Comments(0)//theengine.schwartzengine.com/#post20

High Score and the last Collision stuff

AppsPosted by Carsten Schwartz Mar 31, 2018 17:48
I have added a class to show a High Score List and the last stuff that was missing in my take on the classic Asteroids Game from 1979. Now the Saucers also smash up the Asteroids and the Spaceship continues from the state it ended when moving to the next wave of Asteroids. It seems to be kind of finished. Try it out HERE!



I also had a strange issue with the custom font I made, when you draw vertical and horizontal lines on the Type Script canvas you have add 0.5 to a x or y coordinate, if it is a true integer like 1.0, 5.0 etc. So now the font stands more thin and solid - Strange...




  • Comments(0)//theengine.schwartzengine.com/#post19

Game of Life

AppsPosted by Carsten Schwartz Mar 23, 2018 15:11
Recently some chaps got me interested in Conway's Game of Life. This is a fun simulation of cellular birth, life and death in a grid based universe. So I could not help myself, of I went to try and make something that could simulate this in TypeScript. It has been a quite fun and learning experience.


I started out doing a basic simulation of the Cell AI depicted on the official Wiki page and after that I simply had to make my take on a graphical version. Also to learn a little about the performance of Browser based games using TypeScript.

As it turns out you can make a Singleton class where you store the graphics and use double buffering when you render it to gain an IMHO impressive performance. And it was also fun to design some graphics for the thing.

You can try the simulations I made here:

Simple Game of Life

Graphical Version

the controls are as follows:

[SPACE]: Clear the grid and introduce random live cells.
[A-L]: Inserts cells in some of the known patterns mentioned on the official Wiki.

Have fun...

Windows Versions!

To recap on some C++ coding I also made a Windows version on the Simple Game of Life. I used Virtual Box running Windows with the Visual Studio Community Edition to develop the C++ version.

I also found an old relate program that can make the Mandelbrot fractal this I made ages ago but it is quite fun. Every time it renders it dumps a Fractal.png file on its current location. By holding the left mouse button down, dragging the mouse and releasing you can zoom in the fractal imagery.


And that old Exe runs fine under Wine too :-)

You can download the exe files here:

GameOfLifeDemo.exe

FractalForm.exe

Have fun...

























  • Comments(0)//theengine.schwartzengine.com/#post18
Next »