What I did today

I’m working on a fantasy console and I’ve gotten to the point where I’m drawing pixels :D. Here’s a taste of what it takes to draw a box and move it around the screen ->



		m.push((char)0x1000);
		m.push(Screen.toHexCoords(64, 128));
		m.push((char)1024);
		
		
		m.push((char)0x0600);
		m.push((char)1024);
		m.push((char)0xb000);

		m.push((char)0x5000);
		m.push(Screen.toHexCoords(1, 1));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x5000);
		m.push(Screen.toHexCoords(0, 1));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x5000);
		m.push(Screen.toHexCoords(0, 1));
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(1, 0));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(1, 1));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(0, 1));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(0, 1));
		m.push((char)0x5000);
		m.push(Screen.toHexCoords(1, 0));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x5000);
		m.push(Screen.toHexCoords(1, 0));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(1, 0));
		m.push((char)0xa107);
		m.push((char)0x0600);
		m.push((char)1024);
		
		m.push((char)0x0600);
		m.push((char)1024);
		m.push((char)0x4000);
		m.push(Screen.toHexCoords(2, 1));
		m.push((char)0x2000);
		m.push((char)1024);
		
		m.push((char)0xe000);

		m.push((char)0x9000);
		m.push((char)3077);

Draws This (the box moves and wraps around the screen):

I’m designing a low-level assembly-like language to make this process a lot easier but it’s pretty fun to just input bytes like this

Used some basic math last night to improve my car dust placement, when a vehicle is generated I use the middle point and one edge to calculate the radius of a circle that would surround the rectangle.

When I decide dust or smoke is to be added I can use that radius and the current angle of the car to place decals around the wheels of the car, not sure if this is the best way to do this but it works well. This also makes smoke and dust appear in the correct place of all the vehicles whose tires are at the edge of the rectangle.

I now have dust being added when the car is accelerating from a stand still and when it is skidding. Improved the skid mark placement as well:

Started implementing a property explorer:

http://magaimg.net/img/5vkk.png

@beeaware was just a prototype and in this case… work with something I already know is the must :smiley:

The new Robot Farm changelog video is out, finally:

hiG780Hx-RY

And here’s a link to the thread for it:

Time for a short a break. Lol

Implemented Saving/Loading, Physics, and a way to “start” and “reset” the simulation (So that you can edit the project in a paused state, and then start it to play-test)

http://magaimg.net/img/5wjx.png

More work on the PBR shader. Saw an interesting property called Reflectiveness in the google filament project. I tried to emulate it with my current implementation (top line only)

http://magaimg.net/img/5x2d.png

I rewrote the rendering in my strategy game to use meshes, which made it trivial to add rivers.

I finally figured out a nice way to load my game world. It’s probably old news to most of you but here’s how I did it. The game world is divided into “chunks”, 8 x 8, so 64 chunks in all. Each chunk consists of a tile based grid of a tile map, the tile map being a grid of 68 x 50 “smaller tiles” (“smaller tiles” are each 32 x 32 pixels). So that makes the world 17,280 x 12,860 (I think). But only one or two chunks are rendered at a time, depending on if the player is within the chunk’s bounds. Is that how you guys do it for a large tile based world? This is like my fourth iteration trying to get this to work and this seems like the best way to go about it but I’m super open to advice!

I also got my hair cut. And going to McDonalds later to get a happy meal to get a Super Mario toy.

Cheers guys, happy Saturday!

Getting back to the good old VIM (NeoVim)

I’m not so good at it, but just finished out making my own configuration for the NVIM + TMUX.

@SHC

Higly recommend:

tmux


vim



vim colorschemes


vimrc
set synmaxcol=199 "syntax anti-choke!

Just posted a draft (in Chit-chat Monster) of what will eventually be an article or wiki here.
It is a long one, took three posts to put up the complete.
I did not do any formatting except for some code tags. The article will be fully formatted.

Topic: Packaging a custom, self-contained Java program for deploying on Windows 64.

It was very difficult to do the packaging, as I could not figure out how to alter the examples given in the deployment guide to work with a jlink file system. So after struggling with and giving up on both JavaPackager and Ant, I went through the process via the cmd.exe shell.

After getting it to work (for my ToneCircleDrone project) I decided to spend a couple days writing up the steps for others. But it turned into a two-week project. Going on three weeks.

Part of the reason it is so long is that my DOS is weak and I spent a lot of time thrashing with that aspect. I wrote up a bunch of explanations to help other programmers like myself who have jumped into it self-taught and rely on Eclipse or another DAW and are weak with system aspects.

Started on implementing simple shops to my game, where you can buy and sell items.

Data for shops are stored in simple .json files:

I posted a major trimming edit of tutorial posted yesterday. Took out a LOT of verbiage/explanation on cmd.exe basics and Windows OS basics. This might be a more generally useful targeting of audience, and a lot easier to read. Maybe a fully formatted version of this will end up being the finished Article/Tutorial.

I went to a meet-up the other day, asking other game programmers about “signing” and “certificates”. I am still researching these things, how to handle issue while not spending too much. Universal reply: “Oh, I use [Unreal/Unity/whatever] so I don’t worry about that.”

How big a factor is this for why new coders gravitate to these platforms? If we show that packaging a Java game can be accomplished without too much hassle, will people be more encouraged to code games with Java/JavaFX?

Speaking of Phantasy Console, I’ve also been working on one. I call it Singulair 64. It’s pretty much a Pico 8 clone. There are a few differences tho.

[b]

(Console)

(Code Editor)

(SpriteEditor)

(MapEditor)

(SFXEditor)

(A simple animation)

[/b]

Right now it’s using a 24 color palette. 16 of the colors are from Pico 8 palette, the rest were chosen by me. In the future, I’ll create a palette of 24 colors from scratch, this one is temporary.

I still need to add stuff to every component and bugs need to fixed and polish is needed also ofc. But it was enough to create an entry for the lowrezjam 2018.

Here’s the url btw: https://itch.io/jam/lowrezjam-2018/rate/293637

PS: It’s also missing the music editor.

It is a massive factor. Deployment is just bullshit irritating busywork that gets in the way of people playing your stuff. If you can make it trivially easy to deploy to multiple platforms that helps a lot. Unity is several steps ahead though with deployment to web and consoles too… but that’s because Java still doesn’t run on a single console.

Cas :slight_smile:

Really great work Philfrei.
I used your guide together with Java 10 and it worked brilliantly in only 15 minutes. I was only interested in using JLink and not Innosetup so I stopped at step 5B.
Some things that I thought could help make it easier for others:

-Small typo, change Demo.Java to Demo.java in “Our package statement, for Demo.Java, is the following:”

-To make it more clear what the project folder is, remind the user it’s dpproject: “From within the current directory dpproject, run the following cmd.exe command:”

-Maybe suggest how to set the current directory using the ‘cd’ command in windows: “cd C:\Users\You\Desktop\dpproject”.

-In step 5B it’s hard to find the two executable files since they’re nestled amongst a bunch of random other files in ‘dpproject\dist\bin’. Maybe add the following: "With the inclusion of this option, two files are created in ‘dpproject\dist\bin’ based on the name “LaunchDemo”. These files are named LaunchDemo and LaunchDemo.bat.

-Perhaps add a zipped downloadable folder with the directory structure together with the compiled and dist directory output there in case someone made a small mistake in these steps.

-Java 11 will be released soon and it will decouple javafx, so to future-proof the demo, maybe make it use AWT rather than javafx or modify the instructions to cope with an external javafx.jar file.

Thanks so much for your guide. I tried using JLink to make a slim distributable exe file a few months ago and gave up. I thought the netbeans IDE would automatically use JLink to make an installer but I couldn’t work it out. Your guide will help lots of people. You might consider posting a question and your answer guide on StackOverflow for maximum visibility.

Cheers,
Keith

Started prefab importing.

OK, posted the walk-through in the wiki section. It ended up taking most of the day, so this really is a “What I did today” post.

I figure we should have a more general wiki for deployment and packaging regardless. I hope that was an okay choice to start that up. The tutorial I wrote only covers one of many possibilities. I’m thinking we can use the thread to have more help for this important topic.

Big thank you CommanderKeith for the excellent suggestions and encouragement. I tried to respond to all suggestions with positive changes.

Am very much open to more thoughts and corrections.

Really, really appreciating your work on this. Building / Packaging my Java game has been a huge challenge for me quite a while. Especially because of the embedded JRE part. Hopefully I can test your guide out asap with Slick2D and Maven (I’m not sure if Slick2D works with Java9 tho, since they remove Java Applet in WebStart functionality and Slick2D still has dependencies to those) and provide you some feedback. I really think something like this might help a lot of people.

Something I just noticed: I think at the top of your entry you might add something like: Requires Java9 (since we use jlink). Just in case someone is reading your tutorial step by step and is wondering why there is no “%JAVA9_HOME%\bin\jlink”. In case I simply did not see the hint that this tutorial requires Java9 or this is the wrong place for feedback I’m sorry :slight_smile: