All posts by Allan

Game Engine (Planned Functionality and Features)

Something I’ve spent along time doing is thinking of what different things I want to include my engine and possible tools that should be created to accompany my engine. They may or may not end up in the finish build for now its really just a rough template of ideas. This list is in no particular order.

  • Level Editor – This is one of the main things that we quite often associate with an engine, of course due to time and feasibility it would have to be kept fairly primitive but nether the less would be a fine edition to the engine. Basic functionality I guess would be being able to import models and assets into the editor and being able to manipulate their transformations. It would also be good of course to add Prefabricated entities for things such as players, lights, spawn points, and whatever else is included with the final design. In an ideal world the engine would all be in one nice little neat package so you could play in the editor much like we see with Unity 3d but we’ll have to see. Integration with an editor probably won’t be until late into the development cycle as I see it more of a tool that sits on top of the engine but I’ll be keeping it at mind during the design process of the engine I ideally want to make it as simple as possible to integrate when it comes round to it. The other thing while I remember is it would be really nice to have a hierarchical view of the entities in the scene nicely sorted and orientated easy to see and select so they can be manipulated in the scene.
  •  Prefabricated entities + Instancing – I was going to have these as two but I think they kind of link together. I would like to be able to combine multiple entities in the scene into what would be known as a prefabricated entities this way it’s there if you want to use it again you can without reconstructing it and any changes made to the prefab will effect all the entities throughout the scene. Considering their all the same I’ll be using a rendering technique know as instancing as a form of optimization more than anything. When you add a prefab to the scene I’m probably going to have it so that it won’t create any new objects but use the ones that have already been created basically.
  • Space Partitioning – I would very much like to implement my own partitioning system such as an Oct Tree, I haven’t totally got this planned out yet but I’ve been having a look, like most things I understand the concept but I’m trying to work out the implementation for myself, I’ve spent some time looking at different containers I could use, at first I though I was just going to use a map container but I herd somewhere that they can be quite slow to work with for such a system so I guess I’ll have to do some more research.
  • Content Management – It would be nice to have something in the system for handling the content management as far as loading and unloading assets is concerned and caching resources so that they may be used later,Object Pools. I haven’t planned this out yet but I know from experience that constantly loading and unloading data when it is not necessary can cause a huge performance hit to the system causing it to be a bit jumpy, a good content management system becomes especially hard when creating something suitable for a sandbox where all the time you are having to load and unload large amounts of assets.
  • Level Of Detail – It would be good to have support for different LOD’s both on models within the scene and for things such as terrain where large levels of detail are not necessary when far away.
  • Volumetric lighting – would be a nice edition.
  • Volumetric fog + other effects – just would be really nice to have.
  • Lighting – point lights, spot lights, directional lights, usual stuff. Obviously would be nice to have various effects to modify the lights such as the brightness, color, distance, falloff and more. But at least get the basics down. and be able to be Real Time and Dynamic.
  • Shadows – Haven’t really looked into shadows much but have a general idea of the concept. Real time and Dynamic Ideally.
  • Scripting Language – Implantation of a good scripting language could be potentially useful there’s already things I’ve come across that are too easy when implementing in c++ such as reflection which isn’t naively supported by c++ i believe. I need to look more into it though I’m not exactly sure of what exactly I want to achieve yet and how I want to do it.
  • UI/ Menu Editor – A useful edition could be a dedicated tool for creating in game menus and Interfaces. At the very least have a nice section of functions that can be used for creating interfaces and menus, I don’t think it’s really so much of a necessity to have a visual UI/Menu editor.
  • Terrain Generation – It would be great to have some form of terrain generation with varying levels of detail, some kind of quad tree in relation to detail level based on view from active camera. At the very least I would like to be able to generate a terrain from a height map and at the most I would like it integrated into the editor with various tools for manipulating the geometry of the terrain.
  • Shaders – A lot can be done with Shaders, I’ve spent some time looking into the rendering and graphics pipeline so hopefully It’ll work out. I’m undecided what shader language I will be focusing on I could just us GLSL a shader language used with Opengl, or I could use nvidias shader language cg which is compatible with Opengl and Direct X so could save some time in the future if I was to port the engine to Direct X. I would like to make use of Vertex Shaders, Geometry Shaders and Fragment Shaders. I’ll get more into this at a later stage when I look at the OpenGl graphics pipeline in relation to the engine design.
  • Abstractness to the Rendering System -It would be nice to some degree to try and keep the rendering system in some way abstract from the graphics library that it is using, this could make porting the engine to use other graphics libraries  in the future a lot easier. I’ve spent most of my time trying to design this part of the system and It’s still for the most part incomplete but I’ll be going onto this much more later. In my mind this is the hardest part of the system at the moment and one of the most crucial so I’m tying to take my time with the design process. I’ve been doing a lot of research, planning and more than anything thinking about what I want to achieve and how to keep it well optimized at the same time.
  • Input Management System – This is something that I’ve already done a nice bit of work towards implementation, For now I’ve took the bind a function to a key press approach, as it stands at the moment you can bind a key to a function which is then in turn called on the key press I thought it may be better to check for all key presses once in the engine loop rather than every object you want to receive input on checking every time its update function is called. Slightly better optimization in my mind. I’m thinking you could have an object which is the current object under control with the player that the input manager keeps track of then it calls the function on that active object and none others, could be combined possibly with some kind of player indexing system in order to manage multiple inputs through one machine at the same time and only call the functions on the objects associated with a given player index. Bit hard to explain what I’m thinking but I may go into more depth at a later stage.
  • Networking – It would be great to have some form of networking but at this stage I don’t have a clue how I might going about implementing it in the engine, It’s more something I would like to implement but probably won’t it’s always something I could look into in the long term after I’ve finished uni if my engine hasn’t been a complete failure.
  • Scene cameras – To view inside the scene, each view port will render the view given by a Scene Camera, The scene camera will hold data relating to the orientation, position and field of view. I pretty much have a clear idea how to implement this and I don’t think it’ll take to long.
  • Objects – Everything object in the scene will inherit from a class called object, among these objects we will have container objects and entities, container objects will hold other containers and entities, This will group the entities so they can easily be manipulated and allows for a lot of flexibility. Entities Ideally will be able to be written in code or a scripting language if implemented.

I will leave it at that for now, there’s still a long list but it’s getting late so I leave it at that for now and probably add more at a later stage. If your one of the few that have found this blog please feel free to criticize my bad spelling and grammar. Thanks for Reading.

 

Game Engine Design (Engine Focus)

Its actually taken me some time to decided what the focus of my engine was going to be, first I had to make some decisions such as whether it would be 3d, 2d, 2.5d, then after that I’ve had to start thinking about a specific style of game to target the engine towards whether it be an FPS, RTS and so on. Another thing that might also affect and make the development easier is focusing on a specific genre of game and bending the engine to suit it’s needs. This is especially important as i pan side by side with the engine development to produce a simple game to test the functionality of the engine, this is opposed to creating several small sample applications to sample different areas of the engine.

I decided to focus my engine towards 3d graphics in the end for several reasons.

  • I’ve looked into 2.5d in the past and as great as some of the engines look that I’ve checked out, It’s just not for me I would rather focus my efforts of either something 3d or 2d. Here’s an intresting example of an engine someone made on top of the XNA framework http://www.youtube.com/watch?v=-Q6ISVaM5Ww.
  • I feel there’s a lot more I could do with 3d than 2d, There’s quite a few things I’m interested in attempting to implement in my engine. I’ve be composing a list of potential features at a later point.
  • I like the added level of complexity involved.

As far the genre of game is involved my 2 preferred genres are adventure and horror, must probably for a common core characteristic between adventure and horror games is that they tend to have really good well written story lines and very fun to play. I’m probably going to take the horror route as its definitely my favorite genre of games. Some of my favorite games include all the Resident Evils created before 4, although the new ones are fun to play the whole feel of the game has changed and they don’t feel anywhere near as eerie as the older ones, Silent Hill, Eternal Darkness And Amnesia – The dark decent. It would be good if I could find a middle ground between some of these games.

quite obviously I’m going to have to now come up with an idea for a simple game that can be built on the engine side by side, I obviously want to keep it simple otherwise It’ll really slow down the development process. I’ll be producing game designs as a later stage, It’s a bit early in development to start thinking about really, first I need to get the core engine designed and implemented I will be keeping it at mind though.

This is far from my finalized, I may change my mind later on, I’m going to spend a lot of time just looking at the feasibility of what I’m trying to accomplish.

 

 

Game Engine Design (Identification Of Libraries and Tools)

This is the first real look at the design in relation to the game engine I have been developing, I’m new to the scene in engine development so it’s quite easy for me to make mistakes and overlook certain aspects. I have very little to go with and I’m constantly researching and finding out more about Engine architecture and implementation. So if something I’m doing seems a bit stupid please feel free to point that out.

One of the first things I did when designing the engine was of course to select a suitable language to implement it in and produce a list of libraries and resource that I could use to aid in the development of the engine. Naturally I chose c++ as the implementation language of choice for the source code and have also considered lua, c# or javascript as possible languages I could use for the scripting language. Whether or not I will actually facilitate scripting in the engine via another language has not actually been decided yet, but there are several reasons why it may be useful but I’ll get onto this at another stage.

Here is a list of some of the libraries that I have identified so far that may be useful during the development, some of which have already been partially integrated into the project, This list is likely to expand as the development go’s on.

Libraries:

  • SDL(Simple DirectMedia Layer) – This is a library which can be used to handle windows management and Input as-well as several other handy things. Using this library could save me a lot of time as far as windows management and input is concerned and makes if far simpler and easier to set up a window ready for displaying 3d graphics. It also has the benefit of being compatible with both OpenGL and Direct X  and several Operating Systems. So it leaves a lot of options open. Although I will be focusing on windows development with OpenGL it might make it easier to port to different OS’s in the future if need be.
  •  OpenAL – I haven’t looked into this much yet but this is a audio library that works with opengl.
  • Newton Game Dynamics – A open source Physics Engine, Looks really good and some really impressive things have been made with it in the past. Physics engines are quite large and complicated so I didn’t deem it feasible to create my own from scratch, that’s a whole project in itself.
  • SDL_Config – A library I found that is used for loading data from configuration files, very handy and saves a bit of time.
  • Devil – A cross platform Image Library

Useful Tools:

  • Tortoise svn – eventually I will probably uploading my project to a svn just to make development a little bit easier to keep track of. I’ve worked with svn’s in the past and found them very useful.
  • Doxygen – A useful tool used for documentation, herd some good things but haven’t checked it out yet.
  • Visual Studio 2010 – My compiler of choice.

 

Project Introduction

As part of my course as you may know in the 3rd year a good part of our grade is deterministic on a project. The actual subject area of the project we undertake is very much our own choice, although of course it should probably relate back to games development. I don’t wish to reiterate over what we have already been given so please refer to this pdf(http://unorthodoxgamestudios.co.uk/Downloads/GamesDevYr3_Overview.pdf), on the last page is a brief description of the project as-well as expected learning outcomes.

As my project progresses I will try to continuously post updates relating to my progress on this blog which may or may not be used as part of the documentation for my project in the future.

for my project I want to create a lightweight Game Engine, which I have already started work on in regards to the base of the engine and the planning but I won’t have the OK on it until I get back to uni in September next year. Game engines do have the potential to be quite complicated so hopefully all the work I do between now and then will help me to getting the OK from lecturers, and convince myself that I’ll be able to produce something worthwhile in the time given. Having worked on largish projects before I know how things can go horribly wrong and that is definitely one of my biggest worries, getting half way through the year then realizing that its all gone wrong and I’m going to have to rework the entire engine. So basically i’m trying not just to convince the lecturers but convince myself as-well… I do know if everything does go wrong with the engine I could always cut a few corners in order to get it complete on time.

In my next post I’m going to start going over the design of the engine, I’ll be looking at some of design choices I’ve already made and the general architecture of the engine it’s far from finalized though a lot could change between the current design and the final design.

Uni – End of Year 2 (Now to get on with some real work!)

Finally university is over for this academic year and I can finally get on with some of my own projects and produce something a little bit more worth while and impressing, and start to post on this blog a little bit more often.

I have to say though getting all the work done and handed in, in time this time round was a bit of a nightmare. It somehow worked out that we had 2 weeks left and 4 assignments to get handed in.3d Modelling final Castle Animation, Maths no.2, Torque 3d AI 2 and OOP&D(Object Orientated Principles and Design). The main reason however that it became a struggle to get all the stuff completed probably comes down to the 3d Modelling and Animation, I mean seriously it took up the first week alone just catching up with all the work that I had neglected to complete already. Modelling is by far one of the most time consuming things that I have ever done, it takes countless hours to model things and that’s only the half of it, if you want to render it and near HD quality a full scene with a good amount of lighting and particle effects scattered throughout the scene, on your average gaming PC this is going to take the best part of a day to produce a render only a few minutes long. So I must say the rendering alone sponged up a lot of time.

<— About to go off on a tangent about Torque 3d

The other big issue of course was Torque 3d, a piece of software that many of you may have heard me saying that I’m indifferent to. The kind of software that I can work in if I try but really don’t like to. And so here is my list of 7 reasons why I don’t like working with the Game Engine Torque 3d at university. Why seven? because I was planning 10 but got tired of thinking about Torque.

  1. At our university were using an older revision of the engine and so it is literally littered with bugs, some of which I have researched how to go about fixing the bugs which as I though requires the engine source code something that we aren’t presented with at university, not like we have time to go through the engine fixing all the bugs anyway .
  2. The uni is very inconsistent with the versions they give us, so rather than being a bug here then there’s a bug then instead and its a bit confusing and rather annoying .
  3. Torque 3d is naturally frustrating to work with, this is probably a combination between the amount of bugs and bad design decisions implemented in the engine, Unless your making a generic FPS without the source code making other games becomes quickly excruciatingly painful.
  4. We get given very little to work with by the university just some stock assets and some poorly written scripts, That and all the assets we do get feel very dated. Games are a constantly evolving, changing and Initiative media I really think we should be working with things a little bit more up to date and naturally sexy to look at, the torque assets make me die a little inside, Could’t we make things a little bit more interesting.
  5. This leads onto my next point Torque 3d feels very dated, behind the times. I played there demo on there latest engine and I wasn’t overly impressed my thoughts exactly were if they can’t even make a good game on their own engine, how can they expect me to seriously.
  6. Its about the only Engine that I don’t actually have fun working with and I’ve worked with a lot of tools, apis , frameworks,engines and languages. I dabbled in things such as Playstation Suite SDK, Source SDK, UDK, NeoAxis engine, Cry Engine, XNA,c , c++, c#, basic, SDL, Unity 3d, Javascript, html, php, Newton Game Dynamics, JigLib physics, Torque2d*, python and a lot more just all I can think of on the spot.
  7. I don’t see many benefits in the future of knowing the ins and outs of Torque 3d, Its outdated and barley used in the gaming industry, from what I understand most employers will be looking for good underlining programming skills and experience in industry standard tools as-well as of course experience working in the industry(Catch 22 when I’ve been checking out jobs in the gaming industry in the past a lot of employers want experience programmers with so many years in the industry having worked on so many commercial games in the past.). Anyway I feel it may be better just to get a core language under your belt and get to grips with underlineing game and game engine architecture and design principles. It may even be worth studying an engine such as unity 3d for one main reason it’s a very robustly built engine and has a lot of documentation which can start to give you an idea of how the engine functions as a whole. Its also got the benefit of being incredibly easy to work with so you can really get a lot of ground covered when working/ studying with it and get a good overview of a complete development life cycle of a game.

 

Its a shame really part of me feels my grade at university is going to be affected by the fact we are using this engine, I feel as though if we were working in something better I would put so much more work in. It really would make a difference all the assignments so far me and pretty much everyone else has pretty much just been handing in virtual crap. Having talked with some of the other people in the class I’m not the only one that seems to be disappointed by the choice of software and the module structure, in fact I haven’t talked to anyone that doesn’t feel in someway indifferent to Torque 3d or dislike it in anyway, although I haven’t talked to everyone in the class. My comments are those of my own opinion and experience with torque 3d and nothing more please feel free to comment on any thoughts feelings you have towards this software, I understand that there are people out there that enjoy to work in torque 3d and i respect you for it I’m not here to start a debate or war I’m only hear to express my opinion but feel free to do the same but keep it friendly. Please may I remind you this is only related to the software Torque 3d and not any other software created by linked with garage games or partner company’s.

Anyway as far as the other 2 assignments were concerned they were pretty much a breeze the maths only took a few nights even though there was a lot of dossing in-between. The OOP&D really was a shame though I was literally running out of time and I produced nowhere near what I wanted to produce and had to skip out on some of the coding, one of the assignments I was looking forward to and might enjoy working on and I ran out of time a real shame really.

Nether-mind there’s always next year Hopefully I’ll get my first. My next post will most likely be related to my final year project as I start to get the ball Rowling ready for next year. Posts should be a little more frequent now that I have nothing to do.

Thanks for reading, Please feel free to Comment, critisize spelling and grammer’s”?!.

Been Busy(Uni Work) – / Next year project.

Just in case anyone out there is interested why I haven’t posted anything in a while, the answer is quite simply uni work… it’s coming up to the end of term and we’ve got quite a lot of work to do so I just quite simply haven’t had chance to update my blog but I will get back to regular entries as soon as my uni work is complete.

Throughout the summer there will probably be regular updates that are going to be more development related as I will be working on my project in preparation for next year. If you don’t already know I’ve been planning to create my own lightweight game engine for my project which I have in fact already started work on, so throughout development I will be producing a lot of documentation in respect to the design and planning as-well as the implementation, and I would very much like to document my progress on this site as- well so anyone that’s interested in my work will be able to check it out, whether it be my friends or my lecturers so they can make sure I’m still on track.

I’ve already spent a lot of time just planning this engine and basically just sitting and thinking exactly what I want to do, creating an engine isn’t necessarily the easiest thing in the world but I am planning on making use of a good selection of libraries and to cut a few corners to speed up development. Already a lot of questions have come up related to the design where I’m going to have to make a decision. One of the first crucial decisions in my mind is the actual engines focus, what sort of games do I want to build on this engine?, will they be 3d, 2d, 2.5d?. Do I want to take an abstract approach here, do I want to cut a corner there. How can I make sure it’s well optimized?. I’ve actually done a serious amount of research and I’ve actually looked very deeply into these question even If they may seem like simple decisions at first glance, the reality is they really do steer the engine towards what the final outcome is going to be. I guess my biggest fear though is that I spend a great deal of time working on this engine and through a few minor bad design decisions it leads to the engine becoming painfully slow and un-optimized and very messy and turning into a catastrophic nightmare. I’ll be honest I’ve made a lot of bad decisions in the past when it comes to software development and I’ve really had to pay for them and I really don’t want that to happen again.  Term ends for me on Friday when all my work is handed in so I will be able to get back to posting then.

Uncharted Golden Abyss

So I literally only a few days ago got myself a PS Vita and one of the first games I got with it was of course Uncharted Golden Abyss. Personally before this game I haven’y played any of the Uncharted selection of games before and I’ve herd good things so that’s literally the reason I bought it, And the fact that at the moment there are very few games that are available for the vita but hopefully that’ll increase as time goes on.

Right from the first moment I started this game I have been impressed, a lot of time effort and hard work has gone into this game. The general game mechanics themselves are very good as-well as having a good story-line that is easy to follow. The graphics are generally quite impressive although not necessarily very refined the lack of AA on this title really stands out in places but nether the less the graphics are pretty much stunning considering its a handheld device. As far as AA goes I really think it was probably a trade off between detailed graphics and well defined graphics, So if AA was implemented I doubt we would have seen graphics as detailed as they are. Although I would very much like smooth graphics I think its a good trade off and the graphical detail is definitely to a very high level comparable potentially with current generation consoles such as the PS3 and 360 although falling short as may be expected considering its only a Handheld device and of course it hasn’t been out long so I highly doubt the developers have truly used the hardware to Its true potential and I’m sure this will increase in time as we see more developers releasing games for the device.

 

My new PS Vita!

So yes my ps vita did arrive the other day but I’ve been soo “busy” just playing around with the vita and getting used to the SDK that I just couldn’t find time to add to my blog. So anyway I’ve been playing the vita the past few days and I’ve got to say from a technical stand point it functions pretty well. The screen is crisp very good quality and well lit, The touchscreen is very responsive feels very similar to what you may expect from the iphones/ ipods and whatnot, The layout of the controls is good so basically from a hardware perspective I would say its pretty sound. And of course not to mention what its got under its bonnet the quad core arm processor and what not but I don’t really want to get into the technical nitty gritty.

Okay so there’s a few good points about the system so I may as-well mention some bad points. One thing although minor that I noticed is on the home screen the circular icons appear to be slightly jagged obviously due to a lack of Anti-Aliasing which to me ruins the finish. I’m not exactly sure why the didn’t implement some form of Anti-Aliasing on the Home screen, but maybe they felt it took a big performance hit to the device and deemed it unnecessary considering the performance loss. Who knows?… Sony obviously. But I bet it merely is for performance reasons maybe we’ll see it implemented on future firmware. But anyway it’s not really that bad you can’t judge a device on silly things like that, but it certainly would be a nice finish.

Naturally Just Cool Features Section (part 1, Part2 Tomorrow)

  • AR- Augmented Reality, Obviously not a new thing we’ve seen it before on the Nintendo 3ds and even on smart phones and tablets, and now here it is on the ps vita. With the console you get a set of AR cards for use with some games that have been provided free that can be downloaded from the PlayStation Store they are literally just a small selection of mini-games quite fun just a good little thing to see on the vita, I do still prefer the ones that come with the 3ds but nether the less its fun to mess around with.
  • PlayStation Store – Its really good to see Sony is on the band wagon and has a ready installed app on the vita so people can access the store and digitally buy ps vita games, psp games etc… However annoying contrary to what “Sony Said” (Don’t take my word for it its just what I herd)… the vita games are cheaper to purchase on Amazon to be honest, and i would rather have a hard copy anyway soo I don’t think I’ll buy anything off the store anytime soon…. Anyway good point I’d like to make about the store is the ascendancy of psp games, which is great and quite a few seem to have what I would consider reasonable price tags on them. Its just a dam shame though that if we want to play any of the games we bought for the psp back in the day on umd.. we will have to purchase them again if we want to play them on the vita.

PlayStation Suite SDK (Open Beta)

It looks like PlayStation Suite SDK is now in Open Beta, so if anyone was planning on checking it out now is the time. Just click here if your interested. So I’m literally downloading it as I type so I don’t have a clue what its like yet, I’ll probably write another post later after I’ve checked it out.

Just from my initial impression from reading through the page it looks really good quite impressive, I think I’m going to get quite a bit of fun out of this. An interesting thing to mention is it looks like you don’t need to sign in/ up or anything to download which is good  and saves a bit of time –> especially considering it always takes me about 10 minutes to remember my password.

edit: The awkward moment when it opens the release notes using my default program for opening html files —> Notepad :/

PlayStation Vita

So through what is money I’ve saved and what I have left over from my bursary I found myself with a nice bit of cash in hand. Although I was planning a slight pc upgrade but I thought you know what with a little donation from my parents from my upcoming birthday I should be able to afford to get myself a ps vita now and still be able to buy my upgrades, which is great because I’ve been looking for something to replace my busted psp for a while and hadn’t had the spare cash… So anyway earlier this evening I took the plunge and ordered a ps vita (wifi only) from amazon with of course a 4GB stick which was free and two games–> Rayman Origins and Uncharted Golden Abyss, which by far to me seem to be the best games available for the vita at this point in time… So hopefully they’ll be good. This all came to under £250 which is reasonable in comparison to how it is prices elsewhere, definitely the cheapest place I’ve seen it.

On another note related to the vita I noticed the Playstation Suite SDK is going into open beta soon if not already I haven’t seen anything from Sony to say it has but I’m not entirely sure whats happening with that I haven’t been able to access the pages from the UK, but hopefully there will be more news soon. I did however found this link, which might be worth a gander if your ever thinking of developing some multi-platform apps for some of Sony’s devices in the future. Its good to see Sony opening the doors for the independent market a little bit, however I have a feeling due partially to the cross platform nature of the SDK itself that were not going to be able to use the ps vita to its true potential and were going to be limited to what we can do. But we’ll have to wait and see, it’ll probably still be a good bit of fun to have a mess around with anyway. It also saves having to write large quantity’s of code from scratch when..lets say you take other development routes with things like this, it’ll definitely speed up development on many respects.

Please feel free to comment/ Criticize Speling,.! Punctuation?… I will probably write up a review/ first impression type thing when it gets here.