Sunday, December 22, 2013

TEROS Engine BETA 0.0.2.7

Riding high, as it were, on the recent wave of interest surrounding the TEROS Engine, I managed to summon the creativity to develop the next version update of the engine, BETA 0.0.2.7. This version update implements save and load functions for writing and reading three-dimensional objects to and from proprietary ".tr3" files and a permanent R3Object rotation function that greatly facilitates the creation of dynamic 3-D models. Not to worry, this proprietary 3-D model file type is written in ASCII mode, so anyone interested can open the file in a standard text editor and alter the data file manually with ease.

Additionally, the public release of BETA 0.0.2.7, which you can find linked here and in the "Relevant Links" sidebar of this blog, includes an updated version of the tutorial directory that I released in my last blog post, and, among these tutorials, is example code for saving and loading R3Objects. Moreover, the tutorials have been edited to only use standard ASCII; as I understand it, extended ASCII can cause trouble with the UNIX Bash terminal. I should also mention that the documentation file for the engine has been updated to reflect the changes instituted in this new release.

As is customary, I have edited a video demo of BETA 0.0.2.7:


Moving forward, I am still considering writing an offshoot of the TEROS Engine for game design; however, sufficient public interest and feedback has yet to manifest itself such that I have an idea of what features would be publicly demanded in an adjunct to the engine. Nevertheless, I will remain ever vigilant in my efforts to improve the engine through open source development, and, hopefully, new version updates are on the horizon.

EDIT: In the future, new updates on the TEROS Engine will, in addition to my usual hosting on OpenDrive, be posted to my new Github account.

Tuesday, December 17, 2013

TEROS Engine BETA 0.0.2.5: Supplementary Video Demo

After a fairly lengthy TEROS Engine development hiatus, I am happy to announce that the engine has gained some interest from third party developers. Hopefully, moving forward, the beta development process will allow me to further improve the engine and release some build updates. Moreover, prior to this recent surge in interest, I was editing a supplementary video demonstration of BETA 0.0.2.5 to showcase the engine's abilities to render more graphically intensive outputs, so, without further ado, here it is:



Additionally, if the demand exists, I am considering writing an addendum to the TEROS Engine's graphics library that will contain game development tools, such as text parsing and level editing functions and classes.

EDIT: Given the recent surge in interest surrounding the TEROS Engine, I have been requested to write a simple tutorial on program development using the TEROS Engine, and, as a first step to fulfilling this request, I have written a few simple examples on how to use the engine's basic functions. These examples can be found here. In the future, I will likely write more in-depth tutorials, but, for the time being, I hope that this will tide over anyone interested in learning how to use the engine.

Tuesday, August 6, 2013

Preserving Video Games as an Art Form

It's-a me, overused "It's-a me" joke!
     Let me begin by stating that, in no way, shape, or form, is this article going to be an attempt to validate or legitimize video games as an artistic medium. Quite frankly, attempting to sway the opinions of those that would detract video games as art is about as useful and fruitful an endeavor as attempting to demolish a brick wall with a sack of feathers; all you ever seem to end up with is a mild, scratchy, irritated feeling as you unintentionally coat yourself in feathers, a bothersome mess
that you'll inevitably have to clean up later, and a thoroughly undemolished brick wall. That said, if you, the reader, are not personally convinced of the artistic merits of video games, I would kindly ask you to do one of two things, either suspend your disbelief for the sake of argument or stop reading here. Obviously, if you are still reading, you have chosen to join me on the "games are art" thought train, were already on the train to begin with, or have decided to ignore my little disclaimer, so let's get on with it.

     Once we start to entertain the notion of video games as art, it inevitably comes to pass that video games be compared to painting, sculpting, literature, music, film, and all other forms of artistic expression, and, in most aspects, video games maintain a unique incongruity with conventional art forms. Paintings, sculptures, poems, films, etc. are all static forms of media. The layers of paint on the canvas, the words on the page, the patterns of light through the film, and so forth are always the same; the differences in perception and creative nuances exist only in the mind of the observer. Video games, on the other hand, are an intrinsically interactive medium. Every play-through is unique, and, to some extent, I believe it is this amorphous quality of video games-- this guided entropy, unique to each player but universally conveying common themes-- that suggests video games as an evolution of art. As the saying goes, art imitates life or, at the very least, the artist's perception of life, and no artistic medium conveys the dynamic, entropic, interpersonally schizophrenic yet common experience of life as well as video games. For the most part, video games have no set running time; they progress at the pace of the player, and many only end when the player decides to stop playing, which, philosophically, may speak to the human compulsion to control fate even in the face of chaos but, more pragmatically, also poses a unique issue in the exhibition of video games as art.

     Historical and contemporary paintings, drawings, and sculptures alike are exhibited to the public at art galleries and art museums; films are showcased at film festivals; music is performed at concerts; and literature has poetry and book readings as its outlets for public appreciation. The appreciation of conventional art has always been a passive endeavor, and, in stark contrast, video games cannot be fully experienced from an observer's perspective. Sans massive multiplayer games, there simply is no outlet for allowing an entire audience to simultaneously share the experience of playing a video game. The closest video gaming has to a physical, public forum dedicated to the celebration of video games as an artistic medium is gaming conventions, and gaming conventions, by virtue of their primary purpose as a corporate selling tool, only offer incomplete gaming experiences at best and do nothing to expose their audience to older games. Conventions are a celebration of next fiscal quarter's profit margins, not of video games as an art form. Nevertheless, I am not necessarily saying that video gaming needs its own means of en masse appreciation. What I am getting at is that, as gaming is a more personalized, more solitary artistic experience, the general public has a great deal of difficulty acknowledging and understanding gaming as art. However, the atypical presentation of video games does bear some similarity to other art if you consider the role of the player as an analogue to that of the performance artist.

      Arguably the artistry in music is principally thanks to the composure itself, the sheet music, tabs, lyrics, or what have you, yet I can't say I know many people who appreciate music by reading compositions. Most people experience music by listening to others perform it, but there is a certain sense of artistic appreciation to be had in performing a musical composition. Moreover, the same artistic resonance in performance applies to the actors in a play and, in my opinion, the players of a video game. In effect, performance is the creation of art through the experience of art-- the transformation of what is ostensibly a completed work into something new through personal interpretation. I would argue that the only clear artistic distinction between playing or singing a song and playing a video game is that video games are much more accessible; video games don't take years of practice and training to understand how to play them. Although, there is a tradeoff between the accessibility of artistic appreciation through performance and the accessibility of the derivative art created by said performance to others. Not many people are going to appreciate your playthrough of Final Fantasy VII as art in comparison to the number of people who appreciate the source material and their personal playthrough as art.

     Regardless of the more conceptual, perceptual similarities and dissimilarities of video games with conventional art forms, a rather disconcerting factual dissimilarity between the two exists, video games are more deeply entrenched in corporate and capitalist interests than virtually any other medium, even more so than films. I fully understand that film has become widely recognized as art, even in spite of the monetary intent of the film industry, and that the present reluctance of the public to acknowledge games as art closely mirrors the past tribulations of film. Unsurprisingly, most people reason that, inevitably, games will gain the same artistic recognition and respect with time, regardless of the distraction of corporate interest. I would respectfully disagree. I have never encountered a movie that only played on a proprietary type of VCR, DVD drive, or blu-ray player, digitally drawn artwork that required specific, paid file imaging software to view, a physical painting with forty percent of the content hidden behind a literal pay wall, sheet music that requires a key code and a product verification email to play, or a book of poetry that must be verified for authenticity by the author once every day, before you are allowed to read it. Regardless of my opinion on the role of DLC, proprietary hardware, DRM, platform exclusives, and internet connectivity dependence in video gaming-- and, make no mistake, I do hate the money-grubbing concepts of DLC and DRM to their very cores-- it is a fairly inarguable point that all of these things make preserving video games for the future a difficult and frustrating proposition at best.

     While the digitization of books, movies, and music has led to some DRM implementation in more classical art forms, digital images, videos, text documents, and music are largely homogenized and standardized in format; any generic media player can open most video and audio files, and the same applies to image viewing software and word processing software. Additionally, more classical forms of media typically have physical, durable analogues that serve as redundancies in the event something were to happen to digital media. In contrast, video games do not have a standardized, cross-platform format, and, for the most part, the only way to preserve games is to either acquire and maintain aging, decaying proprietary hardware or to resort to emulation. It simply isn't a viable option to preserve aging, complex hardware with hundreds of thousands of possible points of failure, and, even if this were a sustainable practice, the means to allow any member of the public to experience historically significant video games would not exist under this paradigm. Also, unlike music, video games cannot solely depend on re-releases to help preserve historical works, as video game re-releases are far more costly, technically difficult to produce, and needlessly proprietary than music re-releases. Furthermore, aside from the obvious copyright issues that it raises, emulation becomes more difficult with each generation of video gaming software.

     Emulation has never been a perfect proposition, and, the more complex the hardware being emulated is, the more prone to runtime errors and game incompatibilities the emulation software will be. The implementation of increasingly convoluted DRM schemes and the fragmentation of games with DLC are only making the issue of preserving current and future generations of games, through emulation or otherwise, all the more problematic. While, currently, the internet's dedicated legions of pirates and hackers continue to miraculously crack virtually every popular game release, regardless of the intricacy of the game's DRM, video game publishers will continue the attempt to make pirates' job and, inadvertently, the job of potentially more well intentioned emulator developers harder. Moreover, it is inevitable that video games will, at some point in the future, transition to being a purely digital medium, and, in spite of some of the benefits of the digital distribution model, if developers persist with increasingly restrictive DRM policies, we risk the possibility of games being lost to time as game data slowly corrupts, due to the short data lifespan of modern, high density HDDs,  or as people simply make room on their hard drives for newer games. Of course, I'm definitely presenting a worst case scenario; I know for a fact that new data storage devices with data lifespans in the vicinity of a million or so years are in the works, and, if DRM policies are toned down, there should be no issue of games disappearing as the publishers drop support for them.

     As much as I despise the anti-consumer policies pervading the modern games industry, I'm not just worried about my games being affordably priced and convenient to use; perhaps it is just the sycophantic retro gamer in me, but  I'm even more worried about the effects of these new digital business tactics on the continued existence of video games of bygone generations. If it were up to me, there would be a non-profit organization dedicated to the preservation of video games as an art form, but I can't imagine that organization being forced to archive cracked versions of modern games because publishers have transformed their games from works of art to temporary services. A great many game industry leaders claim to be looking out for the future of gaming with their new policies; I would argue that they are looking out for the future of gaming as a business, not as an art form. If video games are indeed an art form, which I wholeheartedly believe, and the game industry wants to have its craft respected as art, game publishers and developers would be wise to start treating their products as such.

Thursday, July 18, 2013

TEROS Engine BETA 0.0.2.5: Video Demo

As suggested in my post about the public release of version 0.0.2.5, I have made a video update for the beta of the TEROS Engine. While most of the changes in version 0.0.2.5 were coding optimizations to better facilitate the engine's ease of use and, as such, cannot easily be demonstrated in video format, the video does demonstrate the retooled wire-frame rendering mode and the newly implemented camera zoom feature.


Saturday, July 13, 2013

TEROS Engine BETA 0.0.2.5: Public Release

Recently, I found the time to make the improvements to the TEROS Engine that I promised in my last update. I optimized the polygon texturing algorithm , added support for wire-frame mode, reworked and optimized the line drawing algorithm, and added a zoom feature to the camera class. With these changes, I believe it is finally time for the TEROS Engine to exit development and begin beta testing. So, without further ado, here it is-- the source code for the 0.0.2.5 build of the TEROS Engine. The .rar archive I have linked contains the header file, the .cpp file, and the documentation for the TEROS Engine.

For those of you not familiar with how to compile with external libraries and who use g++, the command to compile with teros.cpp is "g++ -g [insert your .cpp file name here] teros.cpp -o [insert your executable name here]".

In the near future, I might make a video demo of BETA 0.0.2.5. However, barring that, I am inclined to believe that development will slow down in the future. The entire purpose of a beta is to work out the bugs by having external users test the software, and I do not imagine there will be many people rushing to use the TEROS Engine for their projects. Nevertheless, I will, at least, keep pace with the public demand for more content on the engine.

As a side note, the documentation for the engine was done all in one sitting in Notepad. So, if there are any grammar or spelling mistakes, I apologize. I wasn't quite seeing straight by the end of it. On that note, please feel free to contact me about any ambiguities, general vagueness, spelling mistakes, etc. in the documentation; I will be sure to update the documentation as necessary. Additionally, I would greatly appreciate feedback on the engine's code. Rest assured that any bugs found will be promptly amended.

One final remark-- in the unlikely circumstance that someone would actually like to code with my engine, I do ask that you cite my role in the engine's development in your work.

Tuesday, July 2, 2013

Nintari 2600 Gamepad



     Recently, I acquired an assortment of Atari 2600 games and accessories, and, among these items, I discovered a controller with substantial mechanical damage to the joystick. Not being one to simply throw away vintage gaming equipment, I attempted to repair the controller; however, the damage to the mechanical spindle running down the shaft of the joystick was too severe. With the restoration of the Atari controller out of the question, I remembered that I had another broken controller lying around-- an NES gamepad with frayed wiring and a damaged circuit board. Naturally, my first instinct was to Frankenstein the innards of the Atari 2600 controller with the casing of the NES gamepad.


     The first thing that needed to be done was to remove the printed circuit board from the Atari 2600 controller and to extract the electronic switches from the board. So, I proceeded to sever the cord from the circuit board... and, then, I grabbed a hacksaw and began haphazardly lopping off bits of the board.

I think I've found your problem; you have an open circuit... everywhere.
     After thoroughly maiming the circuit board, I removed all of the internal plastic molding from the NES controller, excluding the molding on the four outer screw slots. Next, I cut a piece of cardboard to the dimensions of the interior of the NES controller and glued the extracted bits of the Atari 2600 circuit board to the cardboard. I then removed sections of the plastic, tape-like covering on the segments of PC board to expose the metal contacts, cleaned the contacts, and, using a pinout diagram of the Atari 2600's connector plug, wired all of the switches to a common ground and soldered the corresponding wires from the 2600 joystick's controller cord to the appropriate switches.


     Once I successfully disentangled myself from the unholy abomination of wiring I created, I hot-glued the cardboard slat to the NES controller casing and placed dabs of hot glue atop each of the hardware switches, such that the plastic NES buttons would be able to contact the newly placed switches below them. Additionally, I glued the B button and the start and select buttons on the NES casing in place. I then reassembled the controller and plugged it into my Atari 2600 to test it.


     Unsurprisingly, not all of the buttons worked on the first try. Nevertheless, after monkeying around with the shape and size of the dabs of hot glue on the switches for about ten minutes, I was finally able to get all of the buttons to function properly.

The Nintari 2600 gamepad-- because "Atendo" sounded even more moronic.

     And, there you have it-- the Nintari 2600 gamepad-- my particularly shoddy take on the tired, overdone idea of making an NES gamepad shaped Atari 2600 controller. I set out to do this project without buying any additional parts, and, given that I never actually expected it to work, I'm pretty pleased with the end result. Just in case anyone doubted the functionally of the controller or simply wanted to see it in action, I've made a short video demonstrating the gamepad:



     I apologize in advance for my poor performance at Asteroids; in order to record the controller and the television screen at the same time, I had to view the screen at almost a 180 degree angle. Also, I am well aware that the proper way to record footage from a TV is with a capture card; however, as I do not own a capture card and could not find my tripod, I had to make due with what I had. Just to give you an idea of the grade of equipment I used, I have included pictures of the camera setup below.

In case you're having trouble processing exactly what is going on here, on the left, we have a digital camera mounted on a broom with a wood clamp, and, on the right, we have a smart phone clothes pinned to a set of telescoping coaxial antennas.


Wednesday, June 26, 2013

TEROS Engine INDEV 0.0.2.0

As the title of this post surely betrays, the next update on the TEROS Engine has been uploaded, and, as promised in my INDEV 0.0.1.3 post, this update contains a sizable amount of footage showcasing the engine's ability to render multiple camera angles. Aside from the droves of small tweaks to the engine in INDEV 0.0.2.0, the main addition in this latest build is the implementation of positional and rotational object linking. In positional and rotational object linking, if one of two or more linked objects is displaced or rotated, the object(s) linked to that object are also displaced or rotated the same amount and on the same axis. In later half of the video below, I demonstrate object linking and show how linking can be used to create complex objects with moving parts.


INDEV 0.0.2.0 marks a fairly significant development in the engine's progress, as there are only a few additional changes-- further optimizing the texturing and line drawing algorithms, adding a camera zoom feature, and re-enabling wireframe texturing mode-- that need to be implemented before I release the source code to the public and the engine moves from INDEV to beta.

Friday, May 31, 2013

TEROS Engine INDEV 0.0.1.3

In followup to my last entry, I thought I would post a brief update on the development of the TEROS Engine. The current 0.0.1.3 build of the engine incorporates a new polygon class structure, a refined scaling algorithm, and, most importantly, a polygon texturing function for the 3D camera class. Additionally, by dumping the program output to a text file and subsequently reading changes to the file in real time with Notepad++, I was able to ascertain that the flickering problem in my demo footage is solely due to my console clearing method, rather than to computational inefficiency of the engine.

 
 
Soon, I hope to begin testing the engine's ability to render multiple 3D objects and camera perspectives and to begin developing engine utilities to facilitate the creation of more complex 3D objects. Once again, if anyone has any questions about the engine, I would be more than happy to answer them.

Friday, May 24, 2013

TEROS Engine INDEV 0.0.1.0

Recently, I have taken to writing a C++ console-based graphics engine, which I have dubbed the TEROS Engine, and, a few days ago, I finished the first stable build of the engine. So far, the engine supports the creation and display of windowed, interactive menu screens that can be overlaid atop one another and rudimentary three dimensional perspectives and objects. Furthermore, I have also completed a video showcasing some of the features and development history of the engine, which, assuming I have properly linked the video, can be found directly below this sentence.


With any luck, development will continue to go smoothly, and I will be able to release an open source build to the public in the not too distant future. In the unlikely event that anyone is interested in learning about the engine, or that the spam-bots providing 99% of my traffic gain sentience and take some bizarre interest in this post, I will be more than happy to answer any questions.

Saturday, April 6, 2013

New Modernism

Recently, I found the time to read John Green's Looking for Alaska, and, in the course of reading the novel, I believe I may have stumbled upon evidence for a rather interesting trend emerging in society's existential perception. Since the end of World War II, the notion of postmodernism has largely dominated the cultural and ideological climate of society. In stark contrast to the morose hesitation of modernists to accept the horror of a changing, increasingly entropic world, postmodernists have largely accepted the disillusionment of the individual to traditional ideas of religion, family, and the state; they have embraced the breakdown of the interdependence and existential commonality of individuals, instead favoring the establishment of a splintered, self-centric scheme in which relativism enables the pragmatic mitigation of a perceptively cluttered and apparently chaotic universe.

However, similar to the longing of modernists for a return to traditional ideals, I believe that a new generation seeking a return to a state of mind-- a way of living-- unbeknownst to it in all but some vague impression or surreal pseduo-remembrance is emerging. Out of the postmodernist deification of the individual's perception, a self-propagating, intrinsic compulsion to pursue a life of greater, deeper meaning, to seek a "Great Perhaps" if you will, in a culture that has implicity forsaken the notion of greater meaning, seems to present itself. Rather than a return to traditional values of bygone generations, the members of this societal trend, which I have dubbed "new modernism," desire an escape from the chaotic state that the nihilism and self-centric paradigm of modern society have ingrained in the perceptive lens of the individual.

New modernists have inherited a world perplexingly obsessed with controlling destiny, but that predominantly does not believe in deterministic future-- a world obsessed with amassing power, but that silently fears its own insignificance as a mere smattering of matter in an inconceivably larger universe and as a brief, taudry moment in time. The new modernist culture is one saturated by the tropes, gimmicks, and cliches formed of the postmodernist's immutable, narrow constraints of singularity and quest to forcefully manufacture a unique identity. For new modernists, the burden of knowledge precedes and replaces experience.

By its very nature, the new modernist perspective is paradoxical; new modernists act in the hopes of attaining an unknown, uncontrollable existential axiom in a social climate firmly rooted in the construct of relative but individually defined realities-- a social climate motivated by the conscious acknowledgement and subconscious fear of entropy. In the evolution of society's existential perception, a brief glimpse of the widespread senselessness-- of the stolid universe's disregard for morality and mercy in its governance of all within it, including mankind-- drove the retreat of the individual to a reality governed by one's own perception, to a cloister of structure floating atop a sea of madness. Nevertheless, in society's inward shift in perspective, a new kind of madness surfaced in the benign absurdity of attempting to dominate the universe's will with one's own. Self-contrived understanding could not fill the void left by naivety. New modernists seek some inconceivable harmony between the nature of the external madness and that of the internal absurdity. Through the lens of expectation, one may misremember the past as an anachronism and mold the future into an oversimplified caricature, all the while oblivious to the directly observable present. Man-made structure must inherently emerge over time-- fragmented and incomplete at any one instant in time. Yet, natural structure exists only in an instant, seeming chaotic over time. I would hypothesize that, perhaps, the disjunction of internal and external paradigms is the root of discontent in social existential perception and of new modernism.

Saturday, March 30, 2013

I Made a Game with Invaders from Space in It



Rather than unceremoniously allowing this cacophonous clutter of files to awkwardly loiter about this webspace, with nary a stated purpose or adequate explanation to justify its existence, I imagine that I should give some backstory as to the nature of this post. A few weeks ago, it was a friend of mine's birthday, and-- this friend not being the type to burden others with the implied social obligation of the happy birthday wish-- I only stumbled upon the knowledge of his birthday a few days prior. Nevertheless, it is a fairly long-standing tradition of mine to write happy birthday programs for my friends, so, by virtue of our mutual affinity for retro gaming, I resolved to write a birthday themed Space Invaders clone from scratch in three days. The crude amalgam of files previously mentioned is a hasty retooling of said program that eliminates the personalization and birthday theme. I thought that someone might find some enjoyment or, barring that, vague amusement in the program. Perhaps, if the demand inexplicably exists, I can release the unedited code in the future.

For those interested, here is a link to a .zip file containing the program, the resource files, and the source code. I would encourage mucking about with the resource files; several aspects of the game's graphics can be altered by changing them. It should also be noted that the program is written for those using Windows. However, if requested, I can attempt to adapt it for Linux.

IMPORTANT: To those intending to play the game, I should warn you that, depending on your hardware, there may be substantial screen flicker. Consequently, I must strongly caution those sensitive to such flickering.

Wednesday, March 27, 2013

Hello World

I suppose, in situations such as these, some sort of an introduction is in order-- one that establishes the intentions of this particular smattering of wayward data packets about the air. That said, I had best get on with it, lest I allow the pretension of actually having an audience to whom I may introduce myself bog this inauguration down with trivial concerns of witticism. With regards to the more extraneous, surface details of my identity, I am quite certain that Google has already furnished you with more than you ever cared to know through my profile, but, in the event that you are in need of reinforcement, my name is Kyle. However, as with any individual, my identity is less in my name, hometown, college, etc. and more in the combination of events, thoughts, and passions that comprise my life and in the quirks that emerge from that combination. As I am certain will come as a relief to all those who have perplexingly chosen to read this far, this blog will happily omit the rather dull events surrounding my life and focus on the more abstract and interesting snippets of madness concerning topics ranging from my programming endeavors to the nature of life, to gaming, to literature, etc. that occasionally happen to flow into my stream of consciousness. In short, I would advise you to expect the unexpected from this blog, but, as with all things, structure is a matter of the moment, and the unexpected is inevitable.