EyesOfTheForgotten

Members
  • Content count

    21
  • Joined

  • Last visited

Community Reputation

780 Good

About EyesOfTheForgotten

  • Rank
    Member
  1. Back from the dead, Wanna talk game?

    It's been....I'm going to say around a year, since I've peeked on here. Forever since I actually posted a topic.  So, for those who remember me: Yay! I'm back! For those who know of nothing of me: Hi!   A little backstory: For ages, and I mean ages, I've been wanting to make a game, a space game more specifically, and for the most part I've done some little tech demos, nothing too much to show off. This has all changed. For the last two months I've been working on a little something, that doesn't have a name yet, and it's at the stage to show it's little face.  The Plan: A space building game  ^_^ Yes, I know, it's only one single wall/floor type with textures, I was a bit busy coding everything behind the scenes to make sure this little piece works  :P I've been posting on Twitter and my own personal blog about the progression of this 'game' (it will be a game! Just right now it's lacking the primary gameplay elements, though my nephew thinks it's fun, even though it's just one panel!). Despite what most experienced people will tell me, I have created this from as low as I could go, taking the few shortcuts here and there. This is pure SDL + OpenGL + my code, cusses, and occasional wanna-throw-my-computer. This game primary purpose is to be a fun learning exercise, and also to make a game that satisfies my deepest desire of having a specific space building game that's also more than that!   So. If you read this far, congrats, if you just skipped to the bottom, then you suck  :P  but here's the summary: I made a prototype! I've learned from past mistakes! Questions? Comments? Anything nice? Cookies would be nice  :rolleyes:
  2. Plans and Progress #1

    Welcome to the first part of what hopefully will be a look on a week-to-week overview of my development life! Here for you to see my mistakes, so you don't have to make the same ;) (unless you want to, have fun!) Plans! The next week is the week where I finish off a simple "engine" of sorts, so I can start doing some rapid game devs, making simple little games for experience, and fun. If I actually sat down, focused, and did it, I'd be done it in about a day, or two... so yeah...I need a week. Next month, and the months following, I'll try to make a game a month, using this engine. What's my focus in all this? Learning. Exploring. Fun. Now, why did I make my own engine? Why not grab Unity, Unreal, ? Learning. Exploring. Fun! That and a bit of pride too. Do I suggest you to make your own engine? I would suggest against it, unless you're a pretty good programmer, and want the headache/want to learn. If you're new, but want to learn, find an open source engine, rip it apart, look at the code, try to understand why they did what they did. Progress! *looks at code, twiddle thumbs* Well...I coded, not much mind you, it's enough to get stuff on screen and working; I'm just re-immersing myself to OpenGL's API again; But everything not OpenGL related is pretty much programmed in right now. So that's nice. I was also doing a ton of research (read: watching youtube) about coding, and game design in general. Later on, I'll be showing screenshot progresses as well, but...a screenshot of code/empty screen isn't that interesting :P Any suggestions, comments or what nots, are welcomed! Have fun and happy coding!
  3. Progress Restart Again...

    Typically I don't do this on a tuesday, well, if you actually looked back, typically I don't do this at all anymore... Well That's About To Change! Most of my attention before was focused on making a BIG game, something while, I feel I could still do, I already know that my current skills and attention span, (mainly attention span) won't ALLOW me to do. So, after sitting in a low for a bit I decided that hey, there IS something I can still do! What have I done, in the past, which illustrates what my current attention span will allow? At most, 2 months projects before I burn out, forget my code, come back a month later to look at it and say to myself "What the **** was I thinking?!". So that indicates I should work on way smaller scope games than I was previously aiming for. As always, I'll be documenting everything I can, so you guys can see the fun, mistakes, errors and joy that comes from this indie dev! I'll be posting here every week for people to follow me here, and posting on twitter ([twitter]nightlonegamer[/twitter]) almost every day or so for those who want to follow me step by step and interact with me more directly. Anyhow, without further ado! Have Fun, Keep Deving, Stay Alive!
  4. Well...I'll be honest... Not much has been done... programming wise that is. Been mostly playing around with ideas trying to figure out a few misc things, all of which I cannot say cause, well, don't wanna promise something unless it's official! I did change up the lighting a bit though, I now have the normals transform properly when something is rotated and/or scaled, and adjusted the light to have a strength value so it'll spread x distance before dying off completely, this allows for some more realistic lighting. I am playing with some AI ideas though, and I've created a little character in which I'll need to 3D model and place him in later :) Things are happening!! Slowly... I'll be continuing my AI research though, so don't expect too much done next week either. I did promise I'd do this every week so I will!! Have fun!
  5. Well, we have a bunch of things to talk about this week! So lets shed some light on the subjects and get going! The Shader System. First of all, I've replaced the old [font='courier new']ShaderProgram[/font] class with a system/component for entities, allowing entities to hold their own shaders. I've, of course, named this the [font='courier new']ShaderSys[/font], and it's primary job as of now is to check which is the active shader program, switch to a different shader program if need be, and to compile shader files into a shader program. It's also now extendable, allowing for easy upgrades The system before only allowed one shader program for the entire app, and, as we all know, that's usually not a good idea. While it was possible to switch between two [font='courier new']ShaderProgram[/font] objects, doing so was asking for a bit of trouble (I would explain, but that's another article I'm unwilling to write). Because of this, the [font='courier new']RenderSys[/font] had to be updated to use the [font='courier new']ShaderSys[/font]'s new functionality, This was pretty easy, but I may end up changing it. Currently what's happening is this: For each shader program: - use that shader program. - for each mesh attached to render: +-- check if it's using that shader, if it is, render it. While that's all fine and dandy, it COULD be sped up, by a few ways, BUT as the wise people say, "Premature optimization is the root of all evil." Also, another one of my fave quotes: "Rules of optimization: 1) Don't do it. 2) Experts only: Don't do it, yet." The Light System. Yes, I've finally done it. I finally decided it's time to see the light... (Okay, last Light pun, promise) The [font='courier new']LightSys[/font] was the main reason for my to make the [font='courier new']ShaderSys[/font] and now well... things are a bit more beautiful. As a picture is worth a thousand words, here's two thousand words of before/after: [size=2]Btw, the white ball is above the sky-blue platform. It's pretty standard to use, [font='courier new']AttachLamp(entity);[/font] [font='courier new']Loop: -UpdateLight(); -Render(); Delete everything; Quit.[/font] Right now, it only supports a single light, so doing multiple [font='courier new']AttachLamp()[/font]'s will do nothing, the first light will be the one chosen. As of currently it also only supports a point light as well. The [font='courier new']LightSys[/font] will be updated when I need the other types of lights. Bug Season Yay for mosquitoes and blackflies! They're about as annoying, if not more so, than computer bugs! And I got two bug reports to report, thankfully they're fixed already I took a while to find this one out: Unnamed Engine has the ability to still be able to play a game, even if there are assets it can't find. It will replace missing assets with "default" ugly as hell ones. Thats good and dandy right? That is, if it worked! Default texture works...Default shaders worked...Default model....was missing...took me a while to hunt down what went wrong, and I finally got at it, which showed a new bug (yes, it showed a new one, it didn't create it)! Yay!! T.T [font='courier new']ComponentManager[/font] ([font='courier new']CM[/font]) is the thing that connects Components with Entities...All good right? Well, apparently it had the ability to also "manage" [font='courier new']NULL[/font] components...What does this lead to? Game asks the [font='courier new']MeshSys[/font] for a Model, Model not found, so a model was created. Awesome. Game asks for another Model, that model wasn't found, so a model was...not created, because we already had our default model, saving memory!! Yay! Oh wait, so it just passed [font='courier new']NULL[/font] to the [font='courier new']CM[/font]?
  6. This week has been busy, I've fixed a little problem with my shader loading functions (rather, I forgot to code the darn functions before which messed me up until now) and been researching a ton. I've also coded some limits into the FPS Controller System. Lastly I got a new office. So, Code Stuffs first!! The shader loading function is just a simple OpenGL Shader loading function, nothing too spectacular, open the file, while there's still a character to read, read it into a string, compile that string, etc etc. You can learn about it at http://www.opengl-tutorial.org/ The interesting bit was limiting the rotations, as I'm using quaternions instead of Euler Angles/Axis-Aligned. So here's the summary: First, I need to know where I'm looking, for that I did this (Camera Rotation = c, Congruent of c = c', and unit vector with a +Z direction = z) : [font='courier new']d = c * z * c' ;[/font] This gives me the direction I'm looking, as a vector (actually it's still a quaternion*). Now I use the Dot Product of d (direction) and of the +- Y Axis to see how close I am to going vertical, and therefore doing some bad things (like reversing the mouse movement). If it's really close ( d o y > 0.95) then don't allow it to continue tilting upwards. Now, the research stuffs For the first planned game for Unnamed Engine (Might become the official name xD) will be a very simple one, but it may need some complex AI to be able to do right. So currently I'm doing some AI research in my spare time, thinking about things and how to make an AI that feels "real" enough to the player. Finally. The Office. A picture is worth a thousand words so: https://pbs.twimg.com/media/CGEnk--U0AAmMR9.jpg:large This is a lot better than a TV Dinner table I was using for my laptop! Thats it, that's all. Until Next week!
  7. I took this week studying a few things. Unfortunately that means that not much has been done; in fact I could paste what I've done here, if it wasn't in 10 different files! So, what have I been studying? Well, a few things really, each with their own link of goodies! First off, I found this wonderful "walkthrough" of the graphics pipeline, here. Pretty good if you want a "low-level" of understanding of the graphics pipeline. Take note that this isn't very low-level, not as low-level as hardware, which is most of what this guy is talking about. I'm still not finished it yet, but will sooner or later Next, I've been looking at some OpenGL stuffs, something a little more ahead of myself, do I really need to link you to the OpenGL wiki? I'm sticking with OpenGL 3.2 for this engine, as my mac only supports that, also, 3.2 is all I need for now. I'm just learning a few new tricks here and there, nothing too important to talk about. And finally I've also been looking up some other physics-y math stuff in a wonderful book, unfortunately I can't link the book to you, so here's the name: Real Time Collision Detection, David H. Eberly. A quick google search should lead you to it. There's probably countless pdf's of it, but I won't be endorsing them Also, for future programmers, new programmers, and for a reminder to all. When you make a class/template/function/etc in a programming language, if at all possible, FINISH IT. Reasons: 1) When you go back to your code, and you expect X to work X will work! 2) if someone maintains your code, s/he won't want to murder you for unfinished functionality. and 3) It's a good habit to get into. It'll also save lives...maybe...or at least a few headaches! Tomorrow I have a busy day fixing stuff that should've been fixed months ago... If (programming) things go well a few weeks from now, screenshots will be coming! Hopefully...Soon(TM)[size=2]...ish.[size=1]...maybe Until Next time!
  8. Welcome back! or if you're new to my new blog, please read "The Start...Kind of..." first! Now, I'm going to try my best to make Friday, Blog Day, So yay! [size=2]or at least do this once a week... Let's cut to the chase and this is what I did all week, programming wise: [font='courier new']FPSControllerSystem[/font] Long story short this is what makes controlling something, usually the camera, in an FPS like feel; WASD movement, mouse to look around, Space to jump, Shift+W to run, and C to crouch/crawl. In flying mode (the only mode currently supported) jump and crouch = fly up/down. This will be the first system in which is purely optional for users of the engine; where as, Rendering is usually needed, and with Rendering, you'll need positions, meshes, and a camera; (well, unless you want to render nothing at 0,0,0) Oh and don't forget Textures! But that is kinda optional, but due to the fact it'll be used a lot, it's not as "optional" as I could've made it. Currently, one cannot have "no" texture on. Will probably "fix" this later. I also remade the event system...actually the event "system" was ditched, and replaced with a class that is separate from the "system" pattern I'm using. The reason for this is that, well, entities don't really "accept" keys or mouse inputs; they could be made to, but I found it was 10x easier to ditch the "system" pattern this one time. Another change today was the fact that Systems now can use other systems, right now it's a bit ugly but it's doing it's job. Going to do something to change it later down the road. Also, each system now has a [font='courier new']Couple()[/font] function which can Couple the needed [font='courier new']ComponentManager[/font]s and systems. It may be smart to make the [font='courier new']ComponentManager[/font]s to be gobal, or collected in a general class/struct that can just be passed to the systems; and same with the systems, but I'm gonna try to avoid that if possible, as (or so I'm told) globals = bad; and that would probably be an ugly hack which will allow too much access. To finish this blog entry, I gotta say that the engine is slowly morphing each day and soon(TM) enough there will be a game running with it. What game am I planning? Now that's a secret ;) Next Week: no clue, Might do lights though...assuming I'm not stuck fixing something stupid! PS: Any idea's for the name of the engine?
  9. Welcome to my n[sup]th[/sup] attempt at making a steady blog for myself and my projects! So, to help others, and myself, I'm gonna write some snippets of stuff here, and hope the ideas, methods and over all the posts I make will help out someone First of all, an introduction to my Unnamed engine. The engine is built along a certain 'pattern' (as I'll call it), this pattern has 3 simple parts to it, "Entities", "Components", and "Systems". [size=2]Now, I can see people yelling, "That's an ECS!" ... I can also see Hodgeman raging at them ... If you're curious about my last statement, don't be, I'd love to explain it but I have forgotten what Hodgeman said exactly, so I really don't want to "quote" him and get it all wrong, and have him rage at me Entities in this pattern is just a number, a handle, it basically there to help mapping things; though, as simple as it is, it is a very important job. Components in this pattern is data for the entities, each entity is linked to a number of components using a [font='courier new']ComponentManager[/font] class. Next up is the Systems, which are classes that actually contain functional code for the entities and components. All Systems have an "Attach" and "Detach" function, and most have an "Update" function; A perfect example of how this could be used is the RenderSystem://usually in some sort of "init()" or "load()" functionrenderSystem.Attach(myEntity);//in the game looprenderSystem.Render(); //aka Update.//in a function called kill() or the likerenderSystem.Detach(enemy); This pattern is also easy to change, or replace, as long as any future "renderSystem" has "Attach, Render, Detach" I can easily just replace one line in my project, which would be the declaration of the [font='courier new']renderSystem [/font]variable. The goal of this pattern I'm using is that everything can be swapped out, or even completely ignored without hindering the rest of the program, and that adding new things should be very easy. To summerize my engine, here's a list of the systems and components so far. Components: [font='courier new']Camera[/font] [font='courier new']Transform[/font] [font='courier new']Mesh_GL Texture_GL[/font] Systems: [font='courier new']Camera[/font] [font='courier new']Movement Render[/font] [font='courier new']Mesh[/font] [font='courier new']Texture[/font] As you can see, the Components and Systems are duplicated, the reason for this is that the Components only hold the per-entity data, and the Systems "attach" components to the entities, and also work on the components that entities have. Another way to think about this is that the Systems are the functional properties an entity has. As, an entity attached to Render, is able to be rendered, that is, as long as it has a Transformation and a Mesh, and possibly a texture. The engine so far is very "young" but in it's current state, adding to in, updating it, and changing it isn't very hard, all parts of the pattern are separate, and because of this, they don't mess with eachother. Now, looking at this, you may be wondering: Why not just have a class, that has parents of which the properties I have listed? like, class Camera{public: //stuff that's in CameraSystemprivate: //stuff that's in CameraComponent}class Transform{ //movement and transform stuffs here}class PlayerCam : public Camera, public Transform{ //player stuffs here} Well, I could, but then, as soon as I changed something in Camera, I must ensure that all my code has that change. Also, if someone else is using this engine, they must know about this change; but, thats not the biggest issue, that's just a minor annoyance. (To me, that is) The bigger issue is: What if I want to dynamically add a feature to an entity? It's of class "Flying" and in the game, I've told it that it's now explosive? I can't do that with classes, I'd need to have a list of all "types" it could be, and see if it's that type. That carries the problem that some objects may just be static, and always static, and the player may not change the type at all. This dynamic, on the fly, ability is useful for other things as well, like allowing users to mod the program using files. We can't tell what the user will make an object, and if we can't tell, then we can't make a class for it. We could limit the user, but that isn't nice now is it? This is just a small example of why this is useful. Anyhow, in the next posts, hopefully next week, will be an update on the engine, showing (maybe) the new features, sharing what has changed, and why I changed it. If you want to know more about "Entity Component Systems", here's a good link: http://gameprogrammingpatterns.com/component.html Until Next time!
  10. Sure, I'll join in; lets hope i can think of an idea for the theme, whatever this 'theme' will be xD (OLD SKOOL! xD)
  11. Question for Experts, especially for Beginners: Motivation, how NOT to lose it?

    I read that when it came out! Tried it actually, kinda worked, until my normal motivation killers came >.<   I like the list you got there! Okay, I guess I was Assuming a bit TOO much wasn't I?  Whoops!   Anyhow, Thanks for all the replies so far; Keep them coming! I hope everyone who reads this learns a thing or two (including me >.<)
  12. Okay, a big question to everyone who has produced a successful game (I'll let you decide what "successful" means). How do you NOT lose Motivation?   Simple question, but I know the answer is probably complicated. I have learned many programming languages, many programmers go to me for help. But I actually have a problem staying motivated on a project!! So, for all you experts out there, how do you manage to keep your motivation, at least long enough to finished a half decent game?!   I'm sure I'm not the only programmer, beginner or not, who has a tough time staying motivated and on track making a game!   Looking forward to your answers, and I really hope this will help other programmers, beginners and not, to learn a good way to stay motivated!
  13. Am I Doing this Backwards?

    Thankfully, I've overcame that little problem. Art isn't a problem as it once was...sure HUD will be a pain in the rear, but I know enough to make the basic HUD and I can spend hours later trying to perfect it; Basically it's Irrlicht or Panda3D, depending on what I'm aiming for; This newest project (lets hope it works out!) will be done in Panda3D; primary reason: it's the only engine I got to step 6 with >.< the only reason why that game was canceled was because I did a very stupid thing and told Panda to do collision detection using a ray-polygon with every polygon that wasn't the character...and that was a few years ago now...
  14. Am I Doing this Backwards?

    Okay, first off, I've been trying to make games for the past 5 years, if not longer, and it's plain to see, I'm doing something wrong! (that and not enough motivation)   Heres the rough steps I take when making a game, with reasons why I'm doing it; If someone has any suggestions, PLEASE do so. 1) Get a general Idea; Write a little bit about it (If I write too much about it, I abandon the game cause of the complexities) 2) Do some art which hopefully will make it thru to beta stage (Since I've Never had a good artist willing to help, I'm stuck making my own, so I make some "official" art so I know that I can make the rest easily enough) 3) Spend a few days looking at engines to pick the one I want (usually it's Irrlicht or Panda3D) 4) Start Programming <--Then I stop due to lack of interest or I never make it this far because of art, theres a few times I get past this--> 5) Make some more assets and add them into the game 6) Program some more features Repeat 5-6 until I get what I'm aiming for; I never get to 6 because the "more assets" are usually art that I find a hard time doing and no one else wants to do so it doesn't end up so well -.-'   Any hints of what I may be doing wrong? other than loosing interest or giving up too fast >.<