The Role of a Single Variable in an Application Source Code

What is the role of a variable? In case you don’t know about software design, or basics of programming, let me show to you what kind of a term it actually is. Variable has a type which defines what values it can have. It can be a number, a single character or combination of multiple characters. A variable can also be part of an array that has several variables that are of the same type. Objects have properties and every implementation of an object has a variable as a value to its properties. But we are not going to object oriented programming or modeling…at least not yet.

Together with other variables in a program variables form a state of the program. If you think about thing in any retro game console emulator there are so called “saved states”. This means actually what it exactly is. In Super Mario you have variable, which says in which world you are, which stage you are, were you are positioned in the actual level and, for example, how many lives you have left. So all these variables form the state. You with me?

One thing I wondered for several years especially when I wasn’t too deeply involved in actual programming and I was still trying to get my thoughts gathered was “how can you save the entire game when you are saving your game in any modern game?”. Of course you aren’t saving a full copy of the whole game. You are only saving these values of all these variables. You are saving the state in which the application currently is. And basically, this means text. How much would a text file consisting of, maybe, some hundreds of lines of variables and their values take space? Yeah, you figured it out…it wouldn’t take a lot of space. Not at all.

What does take space if any commercial modern game would be considered? Graphics, 3D models, the recorded sound effects and all of the dialogue of the game. They all take a lot of space. Especially when you think about today’s high quality screens with 4K pixels and high quality sound coming out of the selected audio device. Of course what takes also power is all this processing. The processing of code is done by processor of your computer. Graphics are processed with GPU (Grpahics Processing Unit). Today there is a need to maximize the use of a powerful GPU to process the data as efficiently as possible. The processor then works with the GPU and also the hard disk. We have already witnessed fast data processing of SSDs. SSD is short from Solid State Drive. Earlier we had hard disks called HDD (“Hard Disk Drive”). If you are really into computers and building setups you probably know that HDDs are a lot cheaper than SSDs. I mean, of course, the monetary expense of a unit of space. It is a lot more expensive to get a 256 GB of SSD space than it is to get this same space in a HDD.

Right now we are deep in the workings of a personal computer. All these facts I have already covered took me years to get into. It took me involvement. And mostly, it took a lot of time. I started getting in this, very deeply and by studying, back in 2008. That was the year I started studying first electronics and after two years I moved on to study computer science in an University of Applied Sciences. After I graduated back in 2016 I was having a hard time finding a job. After two years of looking for a job I found one as a customer servant. I have worked my way from there and now I work as an IT support person. And all this started from trying to figure out how the saved game system works in my favorite computer or video game. I think the game I was thinking about was Fallout Vegas.

The question made think deeply. How was the game able to save all this information to a small saved game file? I got the answer but it sure wasn’t an easy peace of a cake. I didn’t succeed very well in courses that dealt with a computer’s memory usage or how is magnetism, a physical phenomenon, handling all this data on a hard disk. But little by little…I got the whole picture. I finally got to combine all this information together. All this started by playing games.

Today, I find that there are several areas that are really interesting to me. If you want to learn some knowledge very deeply, like how computers actually work, you will have to use your past knowledge and experiences to guide your thoughts through it all as a process. Writing something “open” to yourself so that you understand what your mind is dealing and handling is one big key for understanding complex and theoretical matters. And teaching someone or having a conversation about the fact is very useful many times.

I don’t know a lot about actual electronics or how the architecture of a full computer work. Well, I actually know something about it. That isn’t however enough for me to solve every problem. This is also where search engines or even a tool like ChatGPT would come in handy. Of course you can look up information from books or your notes and study some more. Just try to remember to take it piece by piece. There is an old saying. It goes something like this: “nobody is a master as you are born”.

Biggest advancements in technology of personal computers

There have been some significant steps in the technology of personal computers. As we look to the past we can figure that first computers that were called as personal computers came to markets in late 70s or beginning of 80s. This was surely the first big step. Computers were finally affordable for home users. They were small enough to fit in an office. It was this time that Apple brought it’s products to the market also.

First computers didn’t have a mouse. This was also a big step forward. First mouses were clumsy. They had two buttons. I don’t remember or know exactly how an early 80s mouse worked but I can guarantee that they were nothing like the ones we use today. My first experiences with a computer’s mouse were with one that was connected with PS/2 and it had a ball inside it. Mouses have later progressed. They are today connected with USB and use infrared to make sense of where the cursor is moving on the screen.

When PC’s first came to be there were screens but they had poor graphics or only text. This matter developed a lot and has been developing for a long time. We went from displaying only text to our present Full HD or even 4K or even better than those screen resolutions. 3D animations also brought many big improvements to gamers and also to designers. Gamers can today also enjoy many different USB controllers like game pads or driving wheels or even something else.

The biggest changes that I have had an opportunity to witness took place in the 90s and 2000s. I am talking about the advancements in the speed of internet connections, the expansion of  hard drives space and the impact of CD-R drives. I am actually currently reading a book about Spotify. It describes how this change in technology impacted on many things like the music industry and how things changed and developed. There were more space to store your mp3 files. There were lots of piracy.

Today we are in a situation that movies, games and music are sold through internet more and more instead of people buying physical products like CDs or DVDs. This has been possible because we currently have fast internet connections almost worldwide. Things have progressed fast. I have also seen times when we used to watch VHS tapes.

The fast development of technology has made it a bit hard to keep up with the latest advancements. It is also a bit pricey. There is and always will be those people that are in the front when it comes to buying newest technology. There will also always exist people that want to also remember the past. So these people are going to keep those retro devices working so they can enjoy things as they once used to be.

Learning Some Java

Learning to program takes lots of time. When I first got interested in it I started with basics. I started making small websites with HTML. Then I learned more about CSS and got myself into some basic image manipulation that I had to do to make my websites look nice. Back then I got curious about actual programming. I tried my hand at JavaScript and PHP. As I was trying to learn by myself and not in any school or even in a single course I didn’t get far.

I really got into some, so to say, “real” programming when I started studying in a local school of applied sciences. I completed a course that was named something like “Basics of Programming in Java”. I learned many new and interesting subjects. First thing you have to do when you are just starting is to learn how to set up the environment for the actual programming. You might be using Linux or maybe Windows as your PCs operating system. You might want to install an IDE which stands for Integrated Development Environment. You also have to install, if you are going with Java, Java. I recommend using NetBeans as your IDE. It enables you to do so many other things also.

Learning to make games is based on learning how to program. You have to master the basics first. Then you can slowly progress to some advanced matters. While studying programming you also get to see a lot about how the computer that runs all these games is actually working. This is one of the most interesting thing for me and it also motivates me. I have alwaýs been a bit of a holic learner. That means that I want to analyze what I am learning deeply and know the subject and figure out how it actually works. The opposite of this learning attitude is atomistic attitude. It means that the learner is learning some plain facts that are true about the subject being learned and trying to memorize these.

The picture related to this blog post represents the first Java book that I bought as I started my studies. It got me really far. It took me years to learn almost everything in this book. I haven’t fully stomached all of the contents. It has been about ten years since I bought this book. So that tells you a bit about the quality of the text. This book is now already a bit old. I think today Python has become more popular than Java for the first programming language.

Where you usually start in programming is that you learn what are variables, how you construct the code with control structures,  like if-else-statements, how to use the most common functions that the language provides, how to read in text from user and how to print it and also how basic arrays are used. This small list doesn’t include everything. How I started was that I basically started a short course. Then I started a bit more advanced course. And then another course about object oriented programming. Since we are talking about Java OOP is important. I think with Python this subject isn’t as important.

Programming is only one part of what a graduated software developer has to know to be able to work professionally. While studying I learned a lot about databases, user centered development, testing, communications, foreign languages, physics, electronics, mathematics and so on. I took a course about processors also. I deepened my knowledge in software development as I had to choose my main subject from telecommunications, embedded systems and software. This choice was made after one and a half years of studying.

One thing I would like point out about studying. When it is summer the school is closed. You have to figure how are you going to spend the time. You might be working. You might want to take some remote courses like I did. Just don’t be too lazy andjust  try make use of this time somehow. Otherwise it might be hard to start working on your studies again when the summer is over. So keep that in mind. Resting is required but a pause too long can be harmful.

A huge part of getting employed is how well you understand what it takes to be a professional. You have to find the best frameworks and the most useful programming languages. Teachers know a lot but always someone knows a lot about one thing and someone else knows a lot about other thing. Keep your eye on the companies that are doing the things that you would be interested doing. Make some hobby projects to display your skills. It might be a good idea to share your projects in for example GitHub. And remember to build your resume. You can even add some supplement pages that give the employer an idea about your skills.

If you are going to study programming keep in mind that it takes time. Keep your focus. It’s a long road. Go for it if you really are interested in it.

Some changes we have seen – Gaming from 1984 to 2021

I am going to go through the most important changes that have happened inside gaming from my birthday to this day. Back in 1984 we had already NES in some gamer’s living rooms. This wasn’t the first gaming device that I ever played. That place was conquered by PC. Computer games in the 80s might have had black and white or eight color graphics. Some games might have had 16 colors from which the graphics would be presented. The resolution was much lower than what we are used to today.

For games’ sounds there was only this horrible noise that was produced by the computers own speaker. In the 90s it was possible to buy a sound card for your PC and some gaming consoles, like Mega Drive, offered a better quality of sound. We were still far from a CD quality of sound effects and background and theme music. The quality of sound progressed as more and more and better consoles became available and as the technology advanced.

Getting the input from player has progressed. From keyboards, joysticks and simple controllers to game pads like Dual Sense and Xbox Elite. We have seen the beginning of real virtual experience. If you compare the controller that is seen in the related picture to the latest Dual Shock you really can see the difference. When the NES controller has only axis buttons and four other buttons my Dual Shock 4 has way more buttons. You really cannot compare these two in the means of human engineering.

What else has progressed? Designing games has taken major steps forward. Consider for example how much games like Doom and Diablo have influenced almost all types of video games. Besides bringing more technical advancements these games brought us some improvements in pure game design. Many games today have taken influences from role playing games. These features include developing and choosing a role or abilities to develop inside the game. You can gather experience and rare items that are able to be gathered by the player.

We have also seen how social media and internet have both made an impact. Did you at some time go to LAN parties? Well, I did. Haven’t been in those kinds of happenings in a while and this is also the trend as connectivity has increased so that you can get online almost everywhere in the world. Also the size of computers, mobile phones and consoles has been getting smaller all the time.

So if you would travel back to 80s you would see a different world. I think today we are dealing with lots of devices and activities that require more and more these skills that can probably be called something like “digital skills”. These skills include using social media and even marketing and using your visibility in your own advance and in collaboration with your friends and people also that you work with. We are all connected together and there is huge amount of data moving in these networks all the time. As some of us have combined sport activities to the new digital world I think that the amount spent exercising has decreased in overall.

Time will show in what direction we are moving. It has become clear that skills with internet, mobile devices, laptop and desktop computers and different kinds of networks are required. And so are also skills in teaching and providing a decent support for the final users of this technology. Big data has already made it’s impact on games that are actually gathering all kinds of data from within the game as the player makes its moves and progresses in the game.

Breaking Down Mortal Kombat II

I’d like to spend a moment describing my experiences about the second Mortal Kombat game that was released for Sega Mega Drive in 1993. The game has some technical limitations as Mega Drive isn’t, and wasn’t even back in the days, the most powerful platform to release a game like this. Arcade version of this game might have been smoother but we aren’t going to go there today since it’s been too long time for me to talk about that here.

As a software developer graduate I can see some things while playing that I don’t know if they are so clear for people that don’t know computers, technology and programming so well. This small blog post is here for you to dive a bit deeper on how the game is played. I also understand that some people are way better at playing this kinds of games. I have only spent some tens of hours playing Mortal Kombat. Also I like to note that I am concentrating on Mortal Kombat II here instead of all two dimensional fighting games. Yes, there are many of them and I have to mention Street Fighter series here.

This stuff is very interesting for me. I can see how the game kind of “reads” your moves. The opponent, it is this time a computer, reacts to your moves. It can make a move that is most suitable for a certain situation. So the key to winning your opponent is to react with a move that is the best move in your situation. You have to time this move correctly. You have to be in a right position. And this isn’t all there is to it. You can make moves freely. You have to define when and at which position to make the move that is correct move for you to make the opponents health bar decrease.

Fighting games have come a long way since the days of 1993. It is very different to play against the computer than it would be to play against a player. I know that games like Mortal Kombat and Street Fighter are very popular as genres of electronic sports. So you can have a competition against human players. This is how the game was designed. It sometimes feels like the computer is cheating but what else would it do than read your input and position and react as fast and powerfully as possible.

But to talk more about the game. It’s a great game. I find it very fascinating. The graphics are better than the first Mortal Kombats were. It seems like the development team have done a great work. The game has twelve different characters that have their own strengths and weaknesses. This makes the game even more interesting. To beat the game you have to know how to play with not only one character but many different characters that have their unique special moves and so on. You could actually compare and describe which characters are best against a specific opponent.

I am not sure what the basic attributes of all the characters are. I haven’t touched or even seen the source code. I am not aware if this code is available or is it “open source” or closed code. I know that Mega Drive didn’t have so much memory to use. Graphics and movement took a lot of processing from this gaming console also. When considering that this game was released in 1993 it is a game of very good quality. There is also a port for PC. If you are a big fan I can recommend to getting your hands on Mortal Kombat X. And to be honest I have to say that I just some days ago ordered Mortal Kombat 11 for PS4. I had to do it because the price was, I think, this time good. I hope this short blog post can give you inspiration wherever you are and in what situation with work or studying you might be.

Social media & sharing icons powered by UltimatelySocial