The JEOZ Integrated G.D.E.

If anyone had been aware of the long hiatus on this blog, they wouldn’t mind, cause this would be worth waiting for. I didn’t think I would ever see anything quite like this. But after spending most of my life typing into syntax highlighted code editors, it’s inevitable that I would wind up making my own. And I’m going all the way with it, just like Visual Studio. It will have Auto-Complete, Code Generation, and hopefully I can even get the ToolTip help through Reflection.

The farther I …

[

Innovation Is Inevitable

Recently I read a paper on the nature of invention, which went into the factors behind what leads a person to invent. Whether it’s genetics, upbringing, or social status, it attempted to unravel the secret recipe behind what it takes to imagine a novel concept and then make it real.

I am beginning to find that in my own progress with this engine, I can’t seem to make very many steps ahead of where I currently am. Even though I can almost see where everything will go eventually, …

[

Why I Am Using Visual Basic, And How To Stop Panicking

Or, “How I Learned To Stop Worrying And Love The Code”. The main reason most programmers don’t use Visual Basic, is because most programmers don’t use Visual Basic. And aside from being easier to find more examples and tutorials in C#, more often and more importantly it’s about being easier to find a job. But toying with Visual Basic as a kid got me my first programming job, and making games is what compelled me to learn VB.

If anything, my reason for using VB for a game …

[

Next Step, Do Loops For A While

There are many ways to run through a loop in code, and Visual Basic has some that seem to be superfluous. But not only are there slight differences, when you’re working with loops inside of loops, you can use different types to control the flow.

By using the Continue command, you can Continue For, Continue Do, or Continue While. The Compiler will know which Loop you’re referring to, and jump to the next iteration of that loop.

This example doesn’t make any sense, but it illustrates nested loops.

[

jeOS: The Game User Interface – Powered By The ZONE Object

Of all the questions about User Interfaces, one that I can’t answer is why I love them so much. Buttons and ScrollBars and TabStrips and all those amazing imaginary widgets are literally physical objects to my mind. Intelligent parts of machinery that can be constructed into infinite possibilities, using nothing more than words. A person can find fascination in anything, but as for why I’m so obsessed, I don’t get it either.

For some reason, ever since the first time I used a mouse to click a button, I …

[

The “Hello” Operator

Also known as the “Null-Conditional Operator”. In other words, “operations based on whether an object is Null”, AKA Nothing in VB.Net.

Some like to think that ?. looks like two eyes and a lock of hair, and call it the “Elvis Operator”. I would prefer to call it the “Superman Operator”, except for the fact that it doesn’t resemble pair of eyes and hair at all. Not on my font, anyway. And I don’t want it to, I want to see code. Without hair getting in the way, …

[

You Could Buy Me A Ko.Fi, But I Don’t Drink Coffee

Or in my case, call it a ‘micro-transaction’. And I know what you’re probably feeling, but the word itself has nothing wrong with it, just like ‘money’ likewise doesn’t mean ‘greed’.

And Indie developers are justified in using micro-transactions. I think. Unfortunately it’s become acceptable in any game, and as with anything involving easy money, it’s naturally causing problems.

But I love this idea of Ko.Fi. Even though in a way it’s kinda silly, it makes perfect sense. It’s literally just a $3 PayPal donation, …

[

Video Games Grew Up With Me

Anyone who was born in the early 80’s knows what I mean, but I think 1982 everything lines up perfectly. Atari was video games infancy, and was already around when I was born. Graduated kindergarten and soon had an NES, and at 5th grade the Super Nintendo was out, which was video game’s middle school phase.

Then I graduated grade school and into the 3rd dimension with the Nintendo 64, and a year later Diamond Viper v330. When high school was over I graduated to PlayStation 2 and …

[

Public Shared JEOZ As New GameEngine()

I’ve decided I’ve made enough progress with the JEOZ Engine to finally start showing it to people. After coming up with the concept I call JeoCubes, I’m too excited to keep it to myself. And whether I have a demo ready to download right now doesn’t matter, I have something extremely valuable I can offer in return for support.

I’ve waited a long time before going public because I don’t like making people wait, or working under any kind of pressure. It’s hard to say how soon I’ll finish …

[

The Shapeless Structures Of Invisible, Intangible, Abstract Objects

If that title doesn’t describe why coding is so confusing, I don’t know what will. And I know it sounds pretentious, but that’s by default, coding is weird. This might be the core problem with learning to grasp code: the fact that you’re working with “objects” that can’t truly be seen or touched.

If I had to describe what I see in my mind’s eye when I’m coding, I think it often looks like imagining my own auto-complete. When you look at a Keyword in code, your mind …

[

Exceptional Averages

Counting up numbers into an Average takes time, but recently I developed a method of doing this without using a loop. Essentially once the Pile of numbers is full, we need to remove the oldest number from the Pile and add the new one.

Also, if you’re tracking over a long period of time, you want it to be accurate from the beginning. The JEOZ.Average Structure solves those issues.

The Average.Smooth Field is a GoNumber that helps even out the Average Value. When displaying numbers on screen it’s …

[

Every Program Is A New Language

Perhaps that’s going a bit far, but it proves a point. A less extreme comparison would be “every program has a dialect”. In any case, every app or game has a “glossary” of terms almost like any fantasy world has it’s own lexicon. To an outsider it’s almost a foreign language.

With coding, every Function becomes a word that can start a sentence. A Function’s Parameters become “words” of that sentence, especially when using Constants like Enumerators. These allow you to store a value as an Integer while treating …

[

Interpolated $trings Were Worth The Long Wait

Let’s skip the “no pun intended” and get to “where has this been all my life?”. I don’t recall ever adapting to a new concept in coding so quickly. Right away I went through the whole engine and rewrote every single Log() message, using the repetition to try and force myself into a new habit.

Probably since VB3 I’ve been in the habit of using the old style of String Concatenation, which is done with Ampersands. It’s been an automatic behavior for me for a long time, so I …

[

It’s GameTime

Naturally, my first OpenGL game was a 3-D version of Pong. I was using an old library called GLUT which included functions for generating primitives like spheres. You could generate them based on the number of lines of latitude and longitude, AKA “UV Spheres”.

More polygons would make the game run slower, so I cranked that number up until the framerate stabilized. This is a highly sophisticated programming technique often referred to as a “cheap hack”. Sure enough, almost 18 years later, it still runs just fine. Which …

[

The Real Reason The Nintendo 64 Wasn’t Perfect

I always thought the same thing most gamers probably do, that it was the expensive and limited cartridge format that held the N64 back. Some might have thought it was the bizarre 3-handed controller layout, and on retrospect it might have been a big factor.

I was just so hopelessly enamored by it all that I didn’t even realize it essentially had 5 buttons that were almost never used. I wasn’t a fanboy for long though, by about 99-2000 I also had a PSX like any other pagan. …

[

Hi, I’m Joseph Zimm. You Might Remember Me From Such Websites As…

Wait, no you won’t. Unless by some chance you were trying to learn OpenGL back in 2000, in which case you may have found my short-lived tutorial site “glGameDeveloper()”. Somehow at 17, after 6 months of learning C++ and OpenGL, I felt I was ready to start teaching people how to get themselves started as well. It would have been more of a mutual teaching-and-learning experience, especially because early OpenGL became completely obsolete within a couple of years. It took quite a while for it to become what …

[

Life Is Not A Game But The Game Is Life

People who don’t game act like gamers are not allowed to bring The Game into the real world. So let’s not bring the “real world” into The Game. Whatever that means to you.

The Game is where we go to leave the mind-games of the “real world”. That “boss” in the real world is easier to confront when we’re used to dealing with the Final Boss of The Game, and gamers defeat the Final Boss with buttons and clicks.

I may no longer be a “gamer” anymore, but …

[

Multi-Screen Multiplayer: The Unusual Architecture Of The JEOZ Engine

Or: “Why on Earth are you building a new game engine?!”

One of the main reasons is that it seems no game engine is built quite like this from the ground up. Upon bootup, the JEOZ Engine can optionally start a second copy of itself in the background in “server mode”, which I call the “Hub”.

You can’t have two Windows running OpenGL on two screens without running two apps: One Windows app can only have one OpenGL process. So the idea of having separate players on each …

[

“The Big Game”

The primary reason I got back into game development was stumbling upon a new and upcoming series of children’s books. I knew right away that The Artist could see his concept becoming not just a game, but several styles of games. I had no idea I could ever pull it off by myself. But I knew if I could just turn his books into videos, Reading Rainbow style, I could help make the project happen, and then at least have some involvement in designing the inevitable game.

There is …

[

Thoughts On The Game Industry From A Developer Who Doesn’t Have Any

“I don’t like video games. I don’t play video games. Most video games suck. Someone says ‘Hey Joe, you wanna play some video games?’ You know what I say? I say I don’t like video games. I don’t play video games. Most video games suck.”

I am paraphrasing Joe Garrelli (his last name is Rogan?) from the 90’s sitcom NewsRadio to show you how strange this is. It’s not often a lifelong gamer gets so far with making games, and then loses interest in even playing them. If you …

[

Filmed Live, Before A Visual Studio Audience

Or “Why are video tutorials typed out live and not pre-written?” Perhaps this is obvious, but I feel that I needed to hear it sooner, so I should probably cover it. If you’ve watched any video tutorials on coding, you’ve had to watch someone type out the code as they explain it. Even if it involves lots of typos and retyping, somehow this makes more sense and feels better to watch than having everything written beforehand.

Gradually I have realized that if I merely copy and paste code from …

[

The Real M.V.P. Is Trinity

It’s ironic that Trinity makes Neo ask “What Is The Matrix?”, because it takes three Matrices to position every vertex of a model in 3-D space. It’s so appropriate that one of the first things Trinity does is float in space as the camera rotates on the Y-Axis. The M.V.P. Matrix, or Model-View-Projection, is a Model Matrix for the object’s location, times the View Matrix of the camera, times the Projection Matrix of the screen.

I don’t know much about how it works on the inside, because the …

[

Choice. The Problem Is Choice.

Continuing the theme of “things I should have learned sooner”, starting with finding out that If/Switch Statements are expensive, I also finally started learning about Delegates. I had heard of them, and I knew what Function Pointers were from C++ way back in 1999. But I can’t believe I hadn’t looked into Delegates sooner, or that none of the tutorials or articles I ever read had forced me to learn them until now.

The timing worked out okay though, because Delegates are useful in writing Branchless code

[

Just How Many Lines Of Code Are There?

Oh, I don’t know. Three. Wait, four. Five maybe. Literally speaking, JEOZ is around 16,000 lines of code so far. It could use another cleanup I suppose, but not that much, I regularly go back and tidy up loose ends.

But I’m also serious about 4 or 5 “lines” of code, I’m just referring to categories. Several times in the past I’ve tried to think of as few categories for every type of possible Code Statement, and there doesn’t seem to be that many.

Calculations and Assignments – Algebraic Statements …

[

If Only I Had Switched To Branch-less Coding Sooner

One of the first lines of code you ever learn is a conditional statement, such as an “If Then” or “Switch” (aka “Select Case” in VB). But I didn’t find out that they can be expensive to use until I got into Shader code. A GPU has numerous cores to handle millions of pixels, so one branch statement is exponentially costly. In any case, the pitfall you want to avoid is branching inside a loop.

I experimented a bit with some ideas and benchmarked them to find out how …

[

The Nub Of The Engine

For a long time I was shortening the word Entity to Thing, even though it’s mostly shorter by syllable count. I couldn’t find a better word at first, but recently for some reason I looked again. The nub of the story is that “nub” also means “the essence of something”. A nub becomes a bud that either branches off, or blooms into a leaf or fruit or flower.

This fit in perfectly with the naming style I was already using. Every Nub has a Genus property, and you use …

[

Now It’s Time To Go, Numbers

There’s only one place for me to begin with writing articles about coding. The most fundamental parts of the JEOZ Engine are GoNumbers, GoVectors, and GoColors. Games require smooth movement, and building these objects into the core of the JEOZ Engine makes that effortless and automatic.

Simply put, you move from one point to another at X Percent each frame of animation. Instead of a constant motion which looks robotic, it starts very fast and slides to a stop. If you apply this to Arrow Key (WASD) inputs, it …

[

The New “Microsoft Visual B# Language” (AKA Desperate Misleading Click-Bait)

Or, “The TOP 5 THINGS you will NOT BELIEVE they are adding to Visual BASIC!”. And I hesitated to do this, but I’m pretending to click-bait to prove my point. I probably won’t do it ever again. In fact I swear I’ll never ever do it again if you are about to stop reading.

I’m not about to say anything important anyway, this is an opinion. The point of this article is that there are a couple of simple modifications that could be done to Visual Basic that would …

[

What Is The JEOZ Engine?

The JEOZ Engine is meant to be the simplest, most bare-bones 3-D game engine. When I say it’s “old school” I mean grade school, and not just because it’s written in Visual Basic. I don’t require a big engine for simple arcade shoot-em-up games I’m trying to make, and I started learning this back when you had to start from scratch. Once my games are complete, the JEOZ Engine will be an excellent starting point for others in the gaming community to build upon. I plan on doing …

[

A Brief History Of JEOZ

One of my first attempts at making a game was around 1992, a 2-D platformer starring the ASCII Smiley character, using QBasic in MS-DOS. In 1995, I tried to clone Mario’s Picross for GameBoy, as a Windows 3.1 app using Visual Basic 3.0. For a few years I mostly worked with web pages, graphics design, Perl, and Javascript, and didn’t get back into games for a while. Early in 1999 I found a Type Library for Visual Basic 6 to use DirectX hardware acceleration, and made a vertical …

[