Categories

Physics Mayhem

In my forays into Unity physics I am all too tempted to toy with the silly quirks that can manifest. This last week I have been attempting to replicate a mechanic that is common in many games: The clicking and dragging of objects on the ground. It frequently shows itself in puzzle games, and one could argue is the central concept upon which all sim games are built. The ability to place structures or construct buildings is what makes many games fun.

There is an odd problem with implementing these mechanics. While one can clearly see the position of their cursor and the intent of their designs from behind the light of their glowing screen, in the game world the user is moving their cursor on a completely different plane than what their eyes see. A cursor can travel up and down, left and right on the axis of their monitor, and this functions perfectly well in 2D games, however there is a problem when a 3rd dimension is added.

Such cursor movements do not accurately represent depth. A cursor is NOT actually moving along the ground, or distant objects, it’s permanently pasted the the face of your screen. This means it can be difficult to distinguish where objects are actually meant to be deposited by that cursor in 3D space. You may mean to click on the ground a distance away, but the game doesn’t know if you meant to do that, or to place an object right in your face.

This is a problem that inevitably rears it’s head in any game that involves accurate cursor clicks in a 3D space, and fortunately there are multiple solutions to it.

One simple answer is to identify the exact object that your mouse clicked. This is actually relatively simple. Unity can fairly easily identify objects that the mouse is hovering over. This solution works perfectly well in games that require identification of distant objects. Unfortunately it does not provide accurate placement, and so in our case of placing workbenches and tables on a factory floor in deliberate and organized manner, will not suffice.

This led me to find a better solution: Ray tracing! This is a term that I had heard in passing for years, though usually to do with lighting effects in games. The way it works is by drawing a line from the center point of the camera, to the position on the mouse on the screen, and then following the direction it extends. Unity can further identify the next object that the ray will hit. This method allows for fast and easy interaction with a 3D environment.

This will be the method I rely on for the placing of objects in this project, though It can be used for other tasks with further applications. I believe I can use it to move, delete, and even track the position of objects, and I am excited to see what other tricks I can pull in this engine.

Categories

First steps for building a game

I made a game recently. My further research into the Unity engine has brought me to the predictable position of constructing my own game. This is an event that I doubt many would expect not to occur.

It’s a simple game. the player controls a red cube, and dodges a series of grey blocks. Different sequences of blocks give the game a unique set of levels, and included are limited interface components that provide a score display, and indicate success or failure. I’ve seen plenty of similarly simple toys across many gaming platforms, but I’ve grown quite fond of this one for the plain fact that I made it myself.

Granted, I didn’t make it all on my own. It was put together by following a series of guides and tutorials that were created to instruct and inspire others on the capabilities of the Unity engine. In this, these videos has been successful. I feel like I have a much better understanding of the capabilities of this engine, and am intrigued by the creative possibilities.

I have a much greater appreciation of the Unity tools. Before this I feel confident in my ability to generate fun and interesting games by writing in simpler languages, and by constructing physics engines or mesh generators from scratch. A part of me still has ambition to produce games in such a manner, but I still have newfound respect for the features that Unity can provide.

My task for now is to attempt to find relevant tutorials and guides that will help me produce a product more similar to our assigned project. If I could find a video series that covers creating a sim-city-esque game, or one that provides good content on pathing information would be boon to our production.

Categories

The Elder Scrolls Days

I remember years ago when I first saw Bethesda’s creation engine. This was back when Morrowind was the newest entry into the franchise, and though i was quite young I was still fascinated with the possibilities of the provided modding utilities.

I was quite the little terror to the mild-mannered denizens of the ashen isle. I lacked the drive and perseverance to make progress on any quests to save the realm, but I was more than happy to run amok, spewing forth magic and playing pranks on the locals. I was content with my hijinks and never even made much progress in any direction before losing interest and starting over with a fresh new unscathed character.

This mayhem was only exasperated by the discovery of the creation engine. With it I could provide myself end-game equipment, rare magical weapons, and spells. This satisfied my curiosity and gave me hours of entertainment, but eventually my interests diverted to senseless mayhem and I discovered the creative power of the creation engine. Inspired by assets in the game, I enchanted the world with a myriad of strange wonders. I expanded cities far beyond the original design, I built vine-tangled fortresses like something out of a fairy tail, and I created all new dungeons, complete with loot and monsters. Despite the fantastic additions I made to the game, I never deigned to finish a full playthrough. Morrowind remains an item on my bucket list, and I foresee little chance of crossing out this entry any time soon.

My tinkering in Unity has reminded me of my time modding Morrowind. There are many similarities in the two engines, though Bethesda’s utility has far narrower scope. Unity is new in this regard, as it is designed to allow the user to make many different types of games. So far I have created several fun interesting little toys in unity, and can even imagine myself making an entire complete project of my own sometime later in life. For now the priority is in learning it’s many features, and preparing to implement the features of our group assignment. I can now see how we might create some of the functions of the final application, but there is still plenty to learn.

Categories

Virtual Reality Reassessment

I am unconvinced that the integration of VR support into our project will be a significant portion of the work to be done. Unity has some VR capabilities and plugins that can make the transition from monitor to headset smoother, but the bigger deal will be optimizing movement and interface controls.

For navigating a 3D environment and observing, this feature should be fairly simple to build. There is little difference between outputting video feed to a single monitor vs generating a unique picture perspective for each eye. Many a video game mod developer has been able to create VR mod by simply editing the camera perspective, and I believe that the process will be even easier with engine support.

The more difficult task will be building interfaces and controls for movement or other interactions with the 3D world. A keyboard and mouse provide both a plethora of control inputs and excellent precision. The handheld accessories that come with many VR headset models however have a comparatively limited selection, and can interact with virtual environments in whimsical and weird ways. The larger problem on top of this is that the implementation of a VR interface will likely have direct repercussions to the development of the more intuitive keyboard and mouse systems. I fear that by attempting to integrate VR support, we will make the project much more difficult and require a far greater time investment to provide a working product.

An alternative that to me sounds like a happy medium would be to build a system that relied upon mouse and keyboard control to access the greater majority of customization options, but still allowed a user to wear a headset and observe the environment from the unique VR perspective. Implementing joystick controls would also be fairly easy to do. The end product would grant users the full capabilities of a desktop interface, and still allow a user to observe their creation from an first-person perspective.

Fortunately my team is in agreement that the designing of VR integration is a lesser priority than simply constructing a working prototype for desktop systems. I would be more than happy to shift gears to cracking the VR code once we are in a comfortable position with a robust product. I only hope our client will be satisfied with this strategy as well.

Categories

Strike the Earth!

I was quite pleased with our latest group client meeting. Each of our prior interactions left me with the impression that despite the significant amount of work that has gone into our project before we were introduced to it, the current developers don’t have a solid vision for the final product. While this cold be disconcerting (and indeed did feel like a source of tension for the lead), I find the notion freeing. I would be satisfied with, and likely perform admirably on an assignment that had a very clear, set-in-stone blueprint, but now with the revelation that the final concept is a little foggy it gives our group some wiggle room to implement our own ideas.

I’ve worked in several software development firms, and have noticed a bias in many senior engineers that has always rubbed me the wrong way. Many professionals dislike association with the game design industry, and will balk at the notion that the work they do could be compared to such frivolous hobbies. Attempts to argue for the innovations in intuitive systems, or out-of-the-box design that is prevalent throughout the industry have only served to frustrate my coworkers and alienate myself as an unprofessional enthusiast. Despite this, I maintain that there are many lessons that game design can teach to not only software engineers, but any professional from just about any field. Now that we have been given free reign to implement our own ideas, I have expressed the ways in which our project shares similarities with games, and am pleased that my group agrees.

with all the talk of simulating workers running to and fro, moving equipment, and completing tasks, I am reminded of a lesser known game called Dwarf Fortress. The game is the project of a small group of developers, that originally released it’s first (and very alpha) version in 2006. While seeming to be at first glance an incomprehensible mess of ASCII gibberish, the game utilizes a very simple interface of letters, numbers, and symbols to simulate a very complex and vibrant fantasy world. The game is a sandbox where the player is given control of a merry band of dwarves that set out to find their fortune and tame the wilderness by building a mighty fortress, mining valuable ores, and crafting wondrous treasures. The simulation itself is incredibly intricate, and even subtle attitude changes, or physical statuses are registered and can impact the gameplay. One only needs to look up “Dwarf Fortress Stories” to find a flood of shockingly descriptive tales depicting player’s experiences overseeing their dwarven workforce.

“Simulated workers engaging with their environment to complete tasks and maintain a workspace constructed by user design”- sounds kinda like a description of our factory design project, doesn’t it?

There are plenty of obvious things that anyone could point out as being unrelated to the task at hand. I would justifiably receive incredulous looks if I suggested using an ASCII interface, or attempted to implement the ponderous (and a little insane) psychology of fantasy creatures, however I maintain that there are many lessons in the design of this game that we can apply to our project. For that matter, Dwarf Fortress is only one example. The Sims, Minecraft, and many other games have lessons that can be applied to the very professional and no-nonsense utility us engineers are contracted to create. Now that we have some leeway to implement our inspirations, I fully intend to use my knowledge of game design to make the best utility I can.

Categories

The beginning of the beginning, and also the end.

Things have been interesting these last few days. In the wake of the calamitous event that was the late announcement of capstone group assignments I am reminded of the phrase I hear parroted from mouth to mouth, supposedly sourced from military origins of “hurry up and wait”. It is meant to describe the hustle that is put into arranging oneself into a position to best receive the next set of orders… only to sit quietly for an amount of time disproportionate to the effort one made to arrive at the same destination. While I have other projects to distract me, and a shamefully large Steam list to occupy the rest of my time, this has been my capstone experience so far.

I’m not complaining, mind you. I much prefer an abundance of time rather than a deficit. I merely offer that should the dread and severity of that has been described by my senior engineering students of their final year be embellished for the benefit of exaggerating their work ethic, I will be somewhat cross at the stress their testimonies have inflicted upon me in the last few months. The more sensible part of me realizes that this is probably an outcome that I should pray is close tot he truth, as it means that sailing could be somewhat more smooth than I had anticipated. Until then I will opt to take heart their advice and continue to “hurry up and wait.”

Things began when the announcement of group composition was released. I quickly introduced myself and attempted to wrangle my group into a Discord server for collaboration. Our first meeting went swimmingly and concluded with the consensus that we needed to contact our client to further progress in the course. An email later and we were confronted with the reality that a meeting would not occur before the first paper was due. Further attempts to gain feedback resulted in radio silence. We anticipate our first meeting this Monday.

Until then I will do what I can to fulfill the requirements of the course to the satisfaction of whoever is grading my desperate attempt to not completely bullshit. Between you and me though, I’m not confident in my ability to provide quality work given this situation.

In more lighthearted news, the group came to a decision to use Jira for our project management. A small accomplishment, but still possibly amusing to mention. I’m quite satisfied with our group so far. While we haven’t had much of an opportunity to collaborate, at the very least everyone was quick to communicate, and also we all agreed that Discord would make for our main communication platform. An engineer who doesn’t have any interest in gaming is incredibly sketchy, and subject to my suspicion of being a soulless automaton.

The game will change once we get our first meeting on Monday. I am excited to see the vision our client has for the project, as well as further details on what they have planned. Until then I will be a good soldier, hurry up, and wait.

Categories

Life, Introductions, and Everything

If you are wondering what to expect from this blog, believe me, we’re in the same boat. While I have here a hard list of expectations and bullet points handed to me by my instructor like a first grader with a sheet of addition problems, I’d like to attempt to make the task of reading these lines more engaging, and not a monotonous task that unveils my work as a blatant attempt to check all the boxes using the lowest word count possible. Can I guarantee that this will be the most interesting journal ever written by a student assigned the task of blogging? No, probably not. But I will endeavor to ensure that it won’t be the least interesting either.

What’s life without a little uncertainty?

Forewarning forwarded, I can admit there is some practical advantage to following an established format, and much can be accomplished by allocating effort spent to accomplishing predetermined goals. To that end, let’s commence the introductions.

Robot! If you will…

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

Ahh, yes. The path I have taken that has led me to this possible reality is likely straighter than that of others. Like so many of my fellow CS students my interest in software development was tangential to my original passion for games. Even now, I have been enjoying my latest escapades in the world of Amalur with the recent re-release of Kingdoms of Amalur: Re-Reckoning. (Might builds are best, by the way, and anyone who says otherwise can throw themselves in a bolgan cookpot) It was this software inclination that brought me to my first coding class back in my junior year of highschool. I immediately fell in love with the coding projects that I was given, and found that I was quite skilled at them too. Since then I have pursued a career in software development, and am looking forward to making meaningful contributions to the industry.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

I am not currently employed, though I have worked for several large software firms before. HP is one that most people would recognize. Oddly enough, my attempts to secure employment have been rebuffed the further I progress through my education. I had several internships and contracts in my freshman/sophomore years, and nothing since, despite my many attempts.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

I am a fan of anything strikingly innovative. I was fascinated by 3D printing when it was first made a consumer product that anyone could put together. VR simulation is another technology I follow due to it’s applications both in and outside of gaming.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

The one project that caught my eye is the pilot health monitoring system. The project has connections to aviation and health industries, and I would love to see what it would be like applying my CS skills in those areas.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

I already mentioned gaming as a hobby of mine. I also enjoy cooking, fantasy novels, long distance running, and tabletop roleplaying games. As for my interests in the field of CS, I find that the best way to describe my tastes is that I enjoy a good puzzle. This is one of the things that caused me to fall in love with coding. I like the process of planning, organizing, and implementing solutions to logical problems in software development. I understand that the answer that most people who ask are looking for is specialties such as front end, back end, networking, security, etc, but I have experienced problems from each, and find few less appealing than the others.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

OSU has been an interesting experience. I have been able to study a wide variety of subjects from ancient history, to astronomy, and of course, computer science. I’m not sure what else to say on the subject. Maybe if I had been able to experience another university I would be able to contrast the two? I am underwhelmed by it’s outreach programs. It seems like not nearly enough is being done to get students more working experience. I’m not saying that they aren’t doing anything, merely that much more could be done.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

The most important factor for a project to me is it’s connections to industries outside CS. A complete in-house coding job is great, but what would be better is to be on a CS team working alongside medical professionals, architects, biologists, or some other field that is not related to computers or mechanical engineering. I would love to be the “CS guy” in a company or startup.

BEEP BOOP

• What got you started with computers or software?
• Current job or internship
• Favorite technologies
• Favorite listed projects (in this course) and why
• Current interests
• Journey with OSU
• This course and/or the kind of project you would like to work on and why
• Kids, pets, hobbies, sports, games, activities, etc

BOOP BEEP…

I’ve gone over my hobbies already, so I think I’ll wrap things up here. There will be plenty more references influencing my other posts and I will have much more to say once the projects begin. Until then, I look forward to writing more and keeping the site updated with the latest escapades.

-Curt Haldorson

Categories

Hello world!

Welcome to blogs.oregonstate.edu. This is your first post. Edit or delete it, then start blogging!