Pages

Tuesday 2 June 2015

Conclusion of part 3!


Conclusion


So, a lot has been talked about in the third part of this blog. Upon writing this, a few things have become apparent to me that were not before:

  • There are a huge number of programming languages out there, and they all have very different purposes and capabilities!
  • Printers run Java?!
  • Call of Duty still runs on a modified version of the Quake engine!
I hope that you have enjoyed my blog, I doubt that I will be able to add too much more to this again, but we all surprise ourselves!

Cheers,

Matt :D

APIs


APIs
An API (Application programming interface) is a set of code that applications can access. They act like a base for all applications, that contains basic universal code, so that the coder of the application does not have to re-write it all again. There are two main APIs for video games, OpenGL and DirectX. APIs aren’t only for games though, as they are needed for all computer applications.

OpenGL

OpenGL is an API used to run games. It is used in a variety of games, such as the Counter Strike games and the Need for Speed games. OpenGL stands for Open Graphics Library, as it is an API for 2D and 3D games. It is multi-lingual and multi-platform, so it is a popular choice to use.
OpenGL was created from 1991 and released in 1992 by Silicon Graphics Inc. The API focuses on interacting with a computer’s GPU (graphics processing unit) to achieve hardware-accelerated rendering. Although commonly used within video games, it also has other great uses, such as Computer aided design, and simulators (such as flight simulators).  OpenGL offers some built-in capabilities, which are requestable through the API. These include hidden surface removal, alpha blending (transparency), anti-aliasing, texture mapping, and atmospheric effects (fog, smoke, and haze). Anti-aliasing is a feature that can blur the edges in a game, which gives a more realistic look, opposed to it looking blocky. There are many variations of these post-processing effects, and it really comes down to user preference of which to select, for example NVidia’s TXAA (Temporal Anti-Aliasing) can cause users to dislike it because of the blur that it creates.

DirectX

Microsoft’s DirectX is actually a collection of assorted multimedia APIs that are directed towards video games and videos on Microsoft platforms. Originally, all of the separate APIs had separate names, and were downloaded separately, the names of them were Direct3D, DirectDraw, DirectMusic, DirectPlay, and DirectSound. Now, all of these APIs all come under DirectX, the X being a symbol for all of them together. Later on, this X actually became the ‘X’ in Xbox, Microsoft’s games console. DirectX is now used in a few different platforms, including that of the Xbox One and the Sega Dreamcast, and obviously, Microsoft Windows. Actually, whenever you set up a video game based on DirectX within windows, you are usually greeted with a DirectX pop up, saying that it is being updated or configured. DirectX can also be used for computer aided design and other visualisation graphics software. 

Facebook API

The gigantic social network, Facebook, does also have its own API. This API can be used in other websites to access features such as the iconic ‘like’ button and sharing, Facebook login capabilities, payments, and Facebook games. It is a web-based API. The Facebook API features are becoming more widespread across other websites, as the ‘like’ and ‘share’ buttons become more popular and well-known.









So, that is all for the third part of my blog, and sadly that is the end! I will follow this up with a conclusion on what I have found, and then that is all!

Matt :D

Scripting

Scripting

Scripting is huge part of video game and application programming. A script is effectively a text file written in a programming language with multiple commands for the CPU to follow. Scripts are executed by other programs, in order to send multiple processes to the processor. As they are generally just text files, they are easy to edit and write, and even save. Windows machines use DOS and Visual Basic scripts, whereas Mac computers will use AppleScript scripts. For websites with dynamic content, there is ASP, PHP and JSP scripts.


UnityScript

UnityScript is a proprietary script to be used in the Unity game engine. UnityScript can be used alongside multiple types of programming language, such as JavaScript and C#. UnityScript allows the user to make large changes to the gameplay, with just small changes.



QuakeC

QuakeC was made in 1996 to program aspects of the game Quake. QuakeC allowed the user to change many aspects of the game, meaning it was one of the most versatile engines out there at the time. The Quake Engine has been edited by Infinity Ward, and been used in multiple Call of Duty titles! It is even in recent titles to date.







Maxscript

Maxscript is 3DS Max's proprietary scripting language, which works similarly to the Maya Embedded Language. It allows the user to make scripts in order to repeat tedious tasks, making it less work for the user.




















Games Application Software


Games Application Software

Games application software is essentially just a term for the software that makes a game run. 

Computer Programs

In this section, I will start simply, by explaining first what a computer program is, and then expand on that. A computer program is just a set of instructions and algorithms that tell the operating system to do something. By following these instructions, the computer can do something useful, such as opening an internet browser etc. All computer programs are written in a programming language.

Programming Languages

For a computer to be able to recognise what instructions you have set it, it has to be in a language that it understands. They do not understand English or Spanish, it has to be in a programming language!There are many many different types of programming languages available, each following similar principles, but have slightly different outputs. Different programming languages are used for different tasks and different systems, but some programming languages can be used universally, such as Java, C# and C++. Most video games these days are written mostly in C++ and C (some with Java, e.g Minecraft), and some assembly language. Assembly language is a very basic, lightweight language, used for as single type of console. It is another reason why you can not run, for example, a PS4 game on an Xbox One. Interpreted languages are programming languages that require to be translated by another program, so that the CPU and the rest of the computer/console can perform the task required by the language. This means that it can be slower, as it has to go through a separate application first, but it also means that it is a lot easier to program in these languages, making it easier for developers. Most of the big programming languages that I have mentioned above are interpreted languages, as they are cross-platform and very flexible.
Java

Java is a very multi-platform language, with '3 billion devices' running it - as boasted by them quite a lot. It is used for web plugins frequently, as it can be run on many different devices. It is also used to run mobile phone games frequently, but not console games.Java also has a 'micro edition', (which is how 3 billion devices run it), which is used mainly in lightweight devices, such as DVD players and printers (see the picture for a larger list). 
C#C# is another type of interpreted programming language, which is used mainly for developing game development tools. A game development tool is a piece of software that helps developers to create a video game, through creation of 3D game assets, or the simulation of physics in a game.
Compiled languages, such as C and C++ are programming languages used mainly for modern games. When written, this code can be compiled into a file that can be executed by a computer, which in effect runs the program that has been written.Object-oriented programming is a programming language that allows objects to be grouped. These grouped 'classes' can be given different permissions and characteristics. This can be useful in games, as if you need one group of NPCs to carry shotguns, and another group to carry baseball bats, but they all need to look different, you would use classes to do this.OOP is a good way of coding in gaming terms, as it allows the developers to do things quicker, and much more organised.
























Device Drivers

Device Drivers


Hey! This is the section on device drivers, as a part of the last third of my blog - current software technologies.
This is going to be a relatively short section, as I will be covering three types of device drivers used in computers and consoles.

So, what exactly is a device driver?

All devices need a small piece of software, which tells the operating system how to interact with it. The pieces of software are called drivers, and they are very specific to the device that you are connecting. Most of the time, if you just plug in a device such as a keyboard or a mouse, it will start to install the driver automatically, but in other cases, you will either have to install it via a disc, or through downloading it from the internet. Some drivers will automatically check for newer versions on the internet, and then inform the user that it exists, and then try to install it.

I will now cover drivers for computer expansion cards.

  • Graphics Cards
To be able to use a graphics card to its ability, you have to install the drivers for it. You usually find the drivers for these on the graphics card manufacturers website. In my case, I own an Nvidia Card, and when I first installed the driver for it, it installed a program called 'GeForce Experience'. GeForce Experience will automatically alert the user whenever a driver update is available, and allow you to download and install it without having to visit Nvidia's website again. 


For users with AMD/ATi Cards, it is a very similar process to install drivers. So, the driver itself actually tells the operating system what the GPU can do, and what its limitations are, allowing the user to play games or handle other graphics with that card.

  • Sound Card
It is a very similar process for sound card drivers, as you will have to download the driver online, (or in some cases use the supplied disc). Most higher-end sound cards (ASUS, Creative etc.) will have their own software which allows the user to update it too. The sound card driver will tell the operating system the specifics of the card, for example, how many speakers are connected, etc.


  • Network Interface Controller Driver
In some cases, a computer will have a separate network card, which acts to connect the computer to the network, either through wireless or Ethernet cable. These are actually more uncommon these days, because of better motherboard network interfaces. Either way, both expansion card and motherboard network interfaces will need to have a driver, which is usually done through a disc, or if it is on the motherboard, through the motherboard drivers.

So, that is all on device drivers, please stay tuned for more!

Matt :D















Monday 1 June 2015

Operating Systems



Operating Systems

An operating system is the one main programs that runs on a computer or games console. Every system will have its own variation of an operating system, and for some systems, mainly PCs, you can choose with operating system to install. An operating system is of some sorts a package, which allows the user to perform basic but important tasks, such as sending a signal to the monitor, to even accessing hardware such as hard drives and printers! 




An operating system's tasks fall into six main categories:

  • Processor management
  • Memory management
  • Device management
  • Storage management
  • Application interface
  • User interface

Most modern computers allow the user to install an operating system of their choice, from some kind of storage medium, such as a USB flash drive or a disc. A common approach to installing an operating system on a Raspberry Pi, is to install a piece of software to an SD card called NOOBS, which stands for New Out Of the Box Software, which allows the user to flick through a list of certain operating systems, and pick one to install. It is also possible for Mac systems to run Windows, through a piece of software called Bootcamp, although this means that the user will not have as much support as a usual PC user would get.



Generally, an operating system will be included pre-installed on games consoles and package PCs, as it is much more convenient for the user, and not all console users will know how to install an OS. Consoles have locked, proprietary operating systems, which are hardware specific, meaning that you can not run an Xbox's operating system on a Wii. 





This is the Xbox One's operating system, which is actually a stripped-down flavour of Windows 8!










And here is the (in my opinion) not-so beautiful PS4 operating system.









As for PCs, you're generally free to pick whatever you want. There are many versions of different types of operating systems on the market, probably actually thousands. There are three main PC operating systems on the market:


  • Linux
Linux is a (usually) free, very open-source operating system, which is usually used by people who don't mind getting their hands dirty with lots of work in the terminal (see picture)
The most popular 'flavours' (or distros) of Linux is Ubuntu and Raspbian (for Raspberry Pis).



  • Windows
Windows is possibly the most user-friendly and popular of the bunch. Most home PCs will have a version of Windows. Windows has seen many releases, with its latest being Windows 10!
At the time of writing this I am actually very excited about Windows 10, as I have just received a message on my Windows 7 PC, saying that I am in the queue for it!




  • MacOS
As the name suggests, MacOS is the operating system for Mac computers. Mac OS is not very open-source at all, only being able to be installed on mac systems with specific hardware.

Despite being a very beautiful operating system, it is only available to those with (expensive) macs. You'd have to be a super-posh college lecturer or something to own a mac!


So, three very different types of operating system, but what are the similarities?

  • A GUI (Graphical User Interface)
A GUI is very common among most operating systems. The GUI allows the user to navigate their system, and actually use it in a logical way, that makes sense to them. By giving the user a visual representation of their files and folders, it allows them to be able to navigate them easily. Before GUIs, there was lists of information, which took a long time to get through. An operating system that you can choose whether to use the GUI for or not, is Raspbian for the Raspberry Pi. In Raspbian, you can pick whether you want the GUI, or just the command line prompt, as pictured on the right. The Rapsbian command line prompt is better for those using Raspberry Pis for more technical reasons.


  • Managing the computer's memory.
  • Managing the hardware.

There are four main types of operating system available, which are all specific to the system that they run on.


  • RTOS
An RTOS is used on machines that require minimal human input. Machines like this are common in factories and other industrial places. They have to be Absolutely Flawless, as they control machines that are designed to repeat a task many times. If they have any malfunction, it can cause huge issues.

  • Single user, single task
A single-user, single task operating system is designed so that one person can do one task at a time. This is opposed to multitasking. A good example of a single-user, single task OS is that on an Xbox 360. On the Xbox 360, you could only do one thing at a time effectively, for example, you could not have a game running, and have a program such as Netflix on in the background. This was made possible on the Xbox One.


  • Single user with multi-tasking
This is very similar to single user, single task, but it allows the user to run other processes in the background. These operating systems have been around for a while in PCs, as users need to be able to have multiple things open at once, but it is a fairly new feature in consoles, for example, you can multi task on the Xbox One, allowing you to have multiple games and applications open at once, and be able to flick between them.


  • Multi user
Multi user operating systems are found often in businesses and schools/colleges. They allow multiple user accounts to be created, and they are able to log in to any computer that is on the network. By having this network set up, it allows room for hundreds or even thousands of people to be on it at a time.

Mobile device operating systems

Mobile devices are technically just portable consoles/computers, but with stripped-down specs. This means that they have to have operating systems too, which are more lightweight than those used on full-blown computers and consoles.

Windows 7 Starter Edition is an incredibly stripped-down version of full Windows 7, but it is used on low-spec mobile computers, like netbooks with low RAM. Of course, it has its drawbacks, such as not being able to use the aesthetic Windows Aero design, or be able to have multi-monitor support. It is also only a 32-bit operating system. 






iOS is the apple-device proprietary operating system. Is is currently at its 8th version (iOS 8), and can be run on apple iPads, iPhones and iPod touches. It is a Unix-like operating system, but is not fully compatible with Unix. It is not fully open-source, as you are not allowed to install applications from anywhere but the Apple App Store, which is a major drawback of the OS.


Android is iOS' main competitor in the market. It does not look as nice as iOS in my opinion, but can be run on many more devices than iOS can, and it also offers open-source compatibility, allowing users to pretty much install whatever they please. It is a Linux-based OS, which runs most applications in Java.







Windows has its own cut-down OS for phones and tablets. At the moment, the most up to date Windows Phone OS is a type of Windows 8, but this year, it will no doubt have a Windows 10 operating system.






This is a pie chart to show the share of the market share of mobile phone operating systems of 2015. You can see that it is mainly split between iOS and Android.


So, that is all on operating systems, please stay tuned for more on current software technologies!

Matt :D










Platform Dependency

Platform Dependency

A Games platform can be either dependent or independent. The dependency refers to whether the software is locked to running in only one operating environment.

  •  Platform dependent
A platform dependent piece of software can only be run on specific computers/consoles. A good example of this is Mac applications, which are proprietary to Mac systems, meaning that you can not run them on Windows or Linux PCs. As an example of dependent console platforms, it is the same thing as not being able to run PS4 games on an Xbox One.

  • Platform Independent 
Platform independence is the contrary to platform dependency, as in the applications can run in any environment - for example, programs written in a universally recognised 
language, such as Java or HTML, which can be run in multiple different systems.

  • Cross-Platform Games
When a game is cross-platform, it is released on multiple different systems, for example, when a game such as Call of Duty is released on both Xbox and Playstation, and even on PC.

Cross-platform games even spill out to other platforms, such as handheld revisions, and even to mobile phones. A good example of a game that is on a diverse range of platforms is Minecraft. Minecraft started out as a single platform game, on PC, but has now seen console revisions, such as that on Xbox 360, PS3, Xbox One and PS4 systems, It also has a pocket edition for mobile phones, and even a lightweight version written specifically for Raspberry Pi systems.



That is all on Platform Dependency for now, stay tuned for more on this subject, to be continued with operating systems!

Matt :D