Tuesday, December 12, 2017

Be a Follower

Ok so I have a simulator coded that allows me to test my AI flocking and path finding. It's basic, but allows me to test my intended behaviors before translating it over into the real game.
At this point I have a spattering of random enemies in random locations. A random 'notice the player' distance is set. All of the enemies within the notice distance from the player swarm the player. However my task is to make this less taxing on the game. So as I implement path finding I will have to update my logic so that only one or two enemies actually pursue the player, others near those 'leaders' follow them. For this to happen I will need to utilize some of the behaviors of flocking. I will also have to utilize an efficient path finding algorithm.
Once this is in place I can code the behaviors of the 'non-pursuing' enemies.
More to come.

Saturday, December 9, 2017

Move Your Player, Man

I am working on an arcade style game in Java, and using it, initially, to build a flocking/stalking simulator for a zombie game. The code will ultimately be translated to C# and plugged into Unity. But I am far more versed in Java so I want to build it there and avoid the Unity learning curve. When we go to implement it, I'll work with the Unity developer.
I am working on player movement, because the same movement class will drive the enemies. I ran into the same problem I had with The Swarm - my previous arcade game. When a direction key is pressed, then another direction is pressed, the key up events for these wreak havoc and you end up with the player sitting still. I came up with an amazing and SO simple solution for this and the results are everything I hoped for.
The movement class has:
- speedX / speedY
- x / y
Then I added:
- moveX / moveY
The last two work with the key presses. (Since it's Java up is negative, down is positive) If the player hits the left direction key, moveX is assigned -1, if the right direction key is pressed moveX is assigned 1. Then the moveX and moveY values are multiplied by the speed and added to the x and y.
In the key release, if the left key is released and the moveX is negative, I set moveX to 0, if the right key is released and the moveX is positive I set moveX to 0.
What's great about this is I can easily set movements in eight directions. When we go to implement it, of course it will need to be expanded and improved for a much more complex game but it will allow us to work out the routing and flocking algorithms.

Friday, December 8, 2017

Ok .NET Core is Cool

I've never toyed with .NET Core before. And just in doing the setup, creation of a new console app and runming it - I have to say .NET Core is pretty cool! It isn't an IDE, but rather a console application. It creates some basic projects for you via templates and is able to build and run your projects. The templates appear to be primarily web-based, with a console app template in there as well.
Sad to say, since I've always built in Visual Studio, I don't actually know how to create much beyond these templates. It's amazing how helpful IDE tools like intellisense are, yet at the same time they prevent you from truly learning the language etc. I've spent years building .NET websites - nothing super complicated, but I was in C# every day. Yet I know Java far better than C# because I've always hand coded Java in VIM - without the aid of intellisense or real time syntax/object validation. I set up the manifest file and project structure. I know what files I need to create and where. In VS it was all done for me. Apart from the IDE I'm a noob.
In light of this, .NET Core is even cooler!

How I Roll Blogger

I use Blogger because it's easy. Of course. I can spin up a simple blog with minimal effort. All I'm really interested in is sharing my nerdy thoughts and networking with people who are smarter than I am (I firmly believe I will become smarter via osmosis) - AKA all of you.
I typically write all my posts on my phone, in VIM then publish them via the official Blogger app. I don't have a need for much beyond that. But if you've left me a comment you may notice that my reaponses are slow. That's because thr Blogger app has no concept of comments.
Due to the lack of comment ability in the official Blogger app, I've decided to try some other clients. The first one I'm trying is Bloggeroid. So far it seems - interesting. I don't like the way you have to re-load your post if you save it. I am an obsessive saver so that's not going to work for me - but I do write in VIM so maybe it's Ok. The cool thing is it does have a comments interface, so I should be able to stay on top of them.
I also use Blogger Stats on my phone to look at the numbers. When I don't get direct feedback I can see which topics seem to be of the most interest etc and keep that in mind. I'm not sure about how accurate it is, but good enough for my purposes.

Tuesday, December 5, 2017

Official RM RF Shirts

I created a couple of 'official' rm -rf / tshirts. A command only and sudo version. If you want one, you can get em here via Zazzle:

Monday, December 4, 2017

The Beauty of Macros

I've written about them before but macros are a thing of beauty. One of the coolest aspects of editors like VIM is that everything in the editor is done via command, which means it can be called by a macro.

I don't know if they have since been restored, but I find Microsoft's removal of macros from Visual Studio perplexing. Why would you remove such a powerful tool - that you already had nailed down - from your dev environment?

Anyway...

Macros are something I've been overlooking in my Java console projects. Like VIM everything in my software is driven by commands. - So I could allow users to create and use macros. World Weaver touches on this in the admin utility. Game authors can create macro files (Text files that contain WW commands - either player commands like 'examine the torch' - or admin commands like '_move secret_escape_room"), then call them via the file name:
_macro escapedungeon

This feature has saved me a LOT of time, making tedious tasks much more tolerable. Now I need to revisit my other projects and see if macros would make sense there also.

Saturday, December 2, 2017

Cleaning Up Mud

When you are trying to make filthy music one challenge is keeping it untamed yet crisp and clean. When you are making filthy, bass heavy music you have a similar challenge. Not only are you fighting to keep it clean, but you have to really keep an eye on your frequencies. They are vying for a small range and you are pushing the sounds to the limit. It is so easy to end up with audio mud.
Mud is your enemy, no matter your musical goal. Even if you are making noisecore, if your music is muddy it becomes boring and uninteresting. It is the audio equivalent of beige.

Whatever genre, whatever sound you are after (Unless perhaps you are a shoegazer / wall of sound musician) you want brilliant colors, not beige.
Before I begin, remember I am no expert by any means. I am just a hobbyist musician. So take this article with a grain of salt.

When fighting mud you have three major tools at your disposal.

Frequency Analyzers
As their name implies, frequency analyzers help you see which frequencies your sounds are occupying. They do not alter your sounds, but they help you see where sounds are trampling each other. I personally don't use these, I'll explain why in the next section.

Equalizers
I put an equalizer on every single track in my songs. They are invaluable. My EQ of choice is EasyQ which is a parametric EQ. Using this I can easily see which frequencies I'm limiting and which I'm boosting. I use EasyQ so much that I have a good idea how I'll need to EQ different types of sounds. It serves as a pseudo frequency analyzer.

Sidechain Compression
Sidechain compression is also an invaluable tool (And in Reaper it's super easy to do). The idea is you route the output of a sound, like a kick drum, to other sounds that will be occupying a similar frequency range. Whenever the kick hits, it compresses the other sound so it essentially takes the backseat for a moment. Sidechaining is amazing and when you listen for it you'll hear it everywhere, often it is overdone intentionally to give songs a very unique sound. But yeah, it's surprising how much it can clean up a bass heavy song.

Obviously there are many other tools and techniques out there, but EQ'ing and sidechaining are my go to's.

Introduction to WorldWeaver

A New Iteration  I've been working on the second manifestation of my Interactive Fiction engine - WorldWeaver - for about a year now. I ...