<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5841287919846961850</id><updated>2011-08-12T05:32:18.927-07:00</updated><category term='Rambling'/><category term='Summer'/><category term='Moosader'/><category term='NDS Development'/><category term='Random Ideas'/><category term='Portable Framework'/><category term='SDL Framework'/><category term='Game Development Tips'/><category term='Scripting'/><category term='End of School'/><category term='Resource Management'/><category term='Come Back Post'/><category term='Code Refactoring'/><category term='Technical Programming'/><category term='Unity'/><category term='QUICK End to Secret Project'/><category term='Game Design'/><category term='Daily Update'/><category term='Video'/><category term='Charge'/><category term='OpenGL'/><category term='Component Entity System'/><category term='Coding'/><category term='Super Card'/><category term='Updates'/><category term='Framework Development'/><category term='New Project'/><category term='Recode'/><category term='Unintuitive Physics Competition'/><category term='Design'/><category term='More Development'/><category term='Vacation'/><category term='Developement'/><category term='Game Development'/><category term='Low Level Programming'/><category term='Competition'/><category term='Development'/><category term='Game AI'/><category term='Life'/><category term='Future Projects'/><category term='Hiatus?'/><category term='Tic-Tac-Toe'/><category term='Access Violation'/><category term='SDL Video Tutorials'/><category term='New PC Fund'/><category term='SDL_Framework'/><category term='SegFault'/><category term='Audio Manager'/><category term='UPS'/><category term='Revival'/><category term='Charge On Hiatus'/><category term='Pong'/><title type='text'>XianForce's Blog</title><subtitle type='html'>This blog will detail the highs and lows of my game development adventure.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-233205667387397993</id><published>2011-07-18T11:29:00.001-07:00</published><updated>2011-07-18T14:25:14.005-07:00</updated><title type='text'>Another Long, Unannounced Hiatus?</title><content type='html'>Yeah, I seem to do this a lot. I get really excited and dive into programming something. Then I start hitting a few road blocks, then life picks up and I get busy, and soon programming gets quite left in the dust. It's Summer now for me, and while my schedule is still a bit hectic, I have actually been getting work done. Nothing visible, yet, but I'll talk about what I've gotten done so far, and what my plans are next.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been working on a component entity system. With some help from GyroVorbis, I've actually laid out quite a flexible system. Considering that I used many of the ideas from Component Entity System discussions on the Elysian Shadows forum, I imagine mine may resemble the ES team's system, except much less elegant.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, every Entity is simple a collection of Components and Behaviors. A Component is more or less a package of data, which have functions that a corresponding system calls in order to update it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So as of right now, I have an EventSystem, which handles passing corresponding SFML events to EventComponents (Will be used for GUIs for the most part).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a PhysicsSystem, which manages RigidBodyComponents and CollisionComponents.&lt;/div&gt;&lt;div&gt;I have a RenderSystem which manages RenderComponents.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As for RenderComponents, there are 3 different types: Sprite, Shape, and Text. Since each of those respective SFML objects is based off of the SFML Drawable class, it's quite simple :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;RigidBodyComponents are responsible for managing movement. As for now, the motion is as complete as I want it: acceleration, velocity, and a damper used as friction.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CollisionComponents just hold the bounding box for the entity, and are used in collision checks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lastly, I have a BehaviorSystem which manages Behaviors. Behaviors have an update function, and as such can do certain tasks every loop, although they can also respond to triggers. I currently have 4 triggers programmed in: OnCreate, OnDestroy, OnMove, and OnCollide. When any of these events occurs, the TriggerSystem is called which in turn calls any system that needs to know about the event. This is NOT a dynamic trigger system. The events are hard-coded. The events are going to depend on the TYPE of game I make, not necessarily the game itself, so a full fledged dynamic trigger system isn't required.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm moving toward making a simple game with this structure. Once I finish making a simple game, I'm going back to the drawing board to find the things I do and don't like about the component entity system, and make changes. Then go back and fix it, and prepare it to make another game. This way I'll get it to go through a few iterations before I use it to make an RPG in the future :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the next task on my list is to code in a system for creating entities. I'm going to make entity templates (not as in C++ templates), so that I can store the information for a certain type of entity in code. Later, I'll add dynamic entity creation from file, so that data will be read from a file, then stored in a template.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, that's all for now. Once I have this next item on my to do list done, I'll actually begin programming the game. It's going to be a simple game, just to test the system and see what works and doesn't work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hopefully I can have a video up soon :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-233205667387397993?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/233205667387397993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2011/07/another-long-unannounced-hiatus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/233205667387397993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/233205667387397993'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2011/07/another-long-unannounced-hiatus.html' title='Another Long, Unannounced Hiatus?'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-2615791137658064593</id><published>2010-08-20T22:52:00.001-07:00</published><updated>2010-08-20T23:09:25.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Low Level Programming'/><title type='text'>Unity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HTpoVIxYKtw/TG9sZdVrisI/AAAAAAAAADI/SDplSdIYuGQ/s1600/Unity3D1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 249px;" src="http://2.bp.blogspot.com/_HTpoVIxYKtw/TG9sZdVrisI/AAAAAAAAADI/SDplSdIYuGQ/s320/Unity3D1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5507740053925497538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Well, today, I finally got around to trying out Unity... and to be blatantly honest, I love it! This doesn't mean I'm going to go and do only high level development now; my heart lies within the lower levels of C and C++.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think it's important though to use something such as Unity. Although the thing I love most about game development is getting down and dirty with the technical aspects, I think Unity still deserves a bit of my time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since I began programming, I have not gone back and used anything that'd pre-built. In fact, the only portions of code that weren't my own were the code of the APIs I used (mostly just SDL). The problem with this, is that I've been coding tons of low level stuff. The problem with low level stuff, is you don't often 'see' the fruits of your labor. I can spend hours refactoring code, or adding in a new manager, but as far as the gamer is concerned, none of that exists. In this way, I have become burnt out, which is why I take frequent and long breaks. I think using something such as Unity will allow me to quickly piece things together, so that I can get a lot of fruit for a small amount of labor, which will balance out the technical aspect of lower level programming.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I showed Unity to my younger brother today, and he's learning to use it too. I think this can also be something my brother and I can use together to make simple prototypes to play together. So my hope is that my use of Unity will give me inspiration in my technical programming endeavors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, just a few things I want to point out in the screenshot of my Unity Scene. Firstly, I made a 'car'. I only used the textures that were in the assets provided by Unity. I am just slowly learning how things work in Unity. The car is composed of 5 objects: a cube, 3 cylinders, and a particle emitter. The cube is the body, 2 cylinders are used for wheels, another cylinder is used as the exhaust pipe, and the partile emitter emits steam from the exhaust pipe. I packaged all this up into a prefab and put 2 of them in the scene.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next, you see all those blocks on the ground? Those are 'bullets' I made a small script and attached it to the main camera (which is part of the First Person Controller prefab), and it creates a bullet and adds a force to it when you click.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The random staircase thing in the background is just something I used for testing platforming...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Besides those, the only other thing in my scene is a textured plane (as the ground), and a spot light source.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I learned quite a bit about Unity today :D. I'll be gone for the rest of the weekend, and school resumes Monday, so I don't know how well I'll be able to keep up with programming. This year I toned down my schedule a lot, so I should have a lot more free time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With that, I bid you ado :p&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-2615791137658064593?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/2615791137658064593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/unity.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2615791137658064593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2615791137658064593'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/unity.html' title='Unity'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HTpoVIxYKtw/TG9sZdVrisI/AAAAAAAAADI/SDplSdIYuGQ/s72-c/Unity3D1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-3135868969193053369</id><published>2010-08-17T09:05:00.000-07:00</published><updated>2010-08-17T09:35:28.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Component Entity System'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Refactoring'/><title type='text'></title><content type='html'>Well, I figured the more I post, the more I'll inspire myself to get some work done :D. I haven't really finished anything that I can show off yet. I've been digging through and refactoring code. With all the work I'm putting in, it would seem Charge is going to be practically rewritten by the time I'm done with it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I've been looking at the structure of my Entity System, and it is horribly ugly. I'm like halfway between a Hierarchal and Component Entity System. So I'm going to revise the Entity System into a Component Entity System. One huge thing that I've found to be a problem, and what I've been working on the most, is making sure projectiles don't disappear when the entity that fired them is destroyed. When that entity is destroyed, it's weapon system is destroyed, along with any bullets it fired. I'd have to set up a system to handle the destruction and creation of the bullets, and have the weapon system have a dependency on it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well my new Entity System will solve these issues and others :D. My abstract Component class will look like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;class IComponent&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;private:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;std::string mComponentType;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Entity* m_pOwner;&lt;/div&gt;&lt;div&gt;public:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;IComponent();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;virtual ~IComponent();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;virtual void OnUpdate() = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;virtual void OnSerialize() = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;virtual void OnDeserialize() = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;virtual void OnDebug() = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;std::string GetComponentType() const { return mComponentType; }&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;void SetComponentType(std::string compType) { mComponentType = compType; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Entity* GetOwner() const { return m_pOwner; }&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;void SetOwner(Entity* owner) { m_pOwner = owner; }&lt;/div&gt;&lt;div&gt;};&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I may add Init and Quit functions depending on the components I'll need, but that will be later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So each component will derive from this interface and implement all these functions. Each frame when an Entity is updated, it will iterate through all it's components and update them. If I want to access debug information, that's what OnDebug will handle. Serialization of a component will basically 'save the settings' of that component'. With it, I can Serialize all of an entities components, so that I essentially have that entity saved, and can recreate it. Deserialization reads this information. So it can be thought of as a 'Save' and 'Load'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This all sounds fine and dandy, but how exactly does this help solve my dependency issues? Well I'm going to create a few 'Factories'. Factories are basically objects that help construct complex objects. With this Component Entity System, I'll have a Component Factory and an Entity Factory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These Factories will have dependencies on every major system (and perhaps subsystems) of the game. So construction will be something like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;EntityFactory-&gt;ConstructEntity("ThisEntity");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;//In the definition of that function...&lt;/div&gt;&lt;div&gt;Component* transformComponent = new TransformComponent();&lt;/div&gt;&lt;div&gt;Entity* pEntity = new Entity();&lt;/div&gt;&lt;div&gt;transformComponent-&gt;SetDependency(Camera);&lt;/div&gt;&lt;div&gt;pEntity-&gt;AttachComponent(transformComponent);&lt;/div&gt;&lt;div&gt;EntityManager-&gt;AttachEntity(pEntity);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The actual code will be slightly different, but the idea is still there. In this example, the Transform Component has a dependency on the Camera. Which will actually be a dependency in game. The Transform will be a 4x4 matrix which represents an Entity's position, orientation, and scaling on the screen. It is in Screen Coordinates. The Entity's world position will be handled by another component, the LocationComponent. This means that the TransformComponent also has a dependency on the LocationComponent. So how do we solve this? Well thanks to a few posts from GyroVorbis, I've thought of a system that is likely similar to their's (probably less intense though...).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, Entities will be a container of Components, and will have all the virtual functions that Components have (which will just iterate through and make the call to each Component). It will contain a map of Components with Strings as the key. Since each component holds a pointer to it's owner, it can do something like: m_pOwner-&gt;GetComponent(). The GetComponent function will take in a string that represents the type of component. Then a handy dandy find algorithm (courtesy of STL) I can see if that type exists in that map. If it's there, return it, and it's now a happy day :D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I think this will definitely be an improvement in code structure, which will help development along once I'm finished :D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just so you have an idea, these are the components I plan to have in Charge so far:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-WeaponComponent&lt;/div&gt;&lt;div&gt;-AnimationComponent&lt;/div&gt;&lt;div&gt;-MovementComponent&lt;/div&gt;&lt;div&gt;-LocationComponent&lt;/div&gt;&lt;div&gt;-CollisionComponent&lt;/div&gt;&lt;div&gt;-RenderComponent&lt;/div&gt;&lt;div&gt;-HealthComponent&lt;/div&gt;&lt;div&gt;-InputComponent&lt;/div&gt;&lt;div&gt;-AIComponent (This will very likely be broken down into multiple components...)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now, back to refactoring :/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-3135868969193053369?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/3135868969193053369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/well-i-figured-more-i-post-more-ill.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3135868969193053369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3135868969193053369'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/well-i-figured-more-i-post-more-ill.html' title=''/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8313767734012848152</id><published>2010-08-15T12:54:00.000-07:00</published><updated>2010-08-15T13:10:15.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Daily Update'/><category scheme='http://www.blogger.com/atom/ns#' term='Super Card'/><category scheme='http://www.blogger.com/atom/ns#' term='Portable Framework'/><title type='text'>Long time, No Post?</title><content type='html'>Well, I apologize for my lack of posts in the last month or so. I've been quite busy rambling about. But now I have tons of inspiration built up inside. I'm finding I have a big issue balancing game programming with gaming. I love programming, but I don't play games often. I believe as I program games, it's equally as important to play them. Playing games is what sparks the desire, and inspires, so without it, I burn out quite fast.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So just a little update on what I've been working on...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, I haven't really started DS Development... But I plan to in the near future, just not specifically on the DS. The Super Card team has released an SDK, which I applied to receive... It seems it's quite easy to get, so I'm sure I'll receive one. With this, I'll be helping a friend of mine develop a small library to make things a bit easier to develop with. I hope to make small games and applications with this.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My portable framework has finally had a bit of lift off. For the most part it's finished. The planned networking core hasn't been discussed yet, so we're going to keep it on the back burner, and there's a few optimizations I can make.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I really have to discuss something with my partner... I'm proposing that we entirely remove the abstract base classes. As of now, they create a lot of overhead with the v-tables, and in the end, it's not really necessary. We plan to compile this framework into a library, and still be able to use:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"namespace Platform = iPhone;"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So a quick swap of search directories to the iPhone library files + header files will allow us to recompile what we create on the PC, for the iPhone. And with this, we avoid the nasty overhead of v-tables, which is surely going to slow things down on an embedded system...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So once we get that out of the way, I'll be spending my time starting to actually develop a game with it, and when I get bored, I may pull some optimizations to the library.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lastly, I suppose I'll talk about Charge. To be entirely honest, Charge has REALLY been put on the back burner. I had not even thought about it for the longest time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, last night I grabbed a piece of paper, and sorted out what I needed to do... So here's my current to do list for Charge:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Create Process and Process Manager classes&lt;/div&gt;&lt;div&gt;*Sync the Process Manager with the Enemy System&lt;/div&gt;&lt;div&gt;*Create a Weapon Class to replace the redundant 'fire' function calls&lt;/div&gt;&lt;div&gt;*Sync the Weapon System to the Weapon Class&lt;/div&gt;&lt;div&gt;*Use the Process Manager to create AI process including allowing a lone enemy to join a group&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's just in short... But that all gives me a lot of different things to work on, which I think is healthy in a project. Because if I get stuck in one place, I can work on a different area.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So soon I'll have about 4 active projects:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Charge (Last game using just SDL!)&lt;/div&gt;&lt;div&gt;-Portable Framework (Won't be as active, just optimizations mostly... And network core!)&lt;/div&gt;&lt;div&gt;-First Game using Framework (Perhaps I've revealed the game already, but I won't repeat it)&lt;/div&gt;&lt;div&gt;-Development on the Super Card DSTWO&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I think with all these, I'll be able to keep coding without getting bored with one thing. And I definitely plan to start gaming more and more :D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now moving out of just my programming projects, I guess I'll talk about the SDL Video Tutorials. I apologize for slacking on those lately. I let a friend borrow my mic, and I just got it back today. 'epicasian' messaged me on the Elysian Shadows forum asking about them, and just somebody asking about when the next one will be released was so much encouragement to me, so the next two should be coming soon. But as for now, it's been a while since I've made one, so I got to take a look at the previous ones to see where I am...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, it has been a long time, but I think this long post makes up for it :D. School's starting in a week, so let's see what I can accomplish before then!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8313767734012848152?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8313767734012848152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/long-time-no-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8313767734012848152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8313767734012848152'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/08/long-time-no-post.html' title='Long time, No Post?'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5661472172007194930</id><published>2010-07-21T09:19:00.000-07:00</published><updated>2010-07-21T09:24:22.601-07:00</updated><title type='text'>New Great Book =D</title><content type='html'>Well I'm now reading a book called Game Coding Complete. It's about 900 pages or so, and I love it. Lately I haven't really gotten anything tangible done, so I haven't been posting =/. I have been writing down a lot of different ideas to implement AI in Charge, but theres a few kinks I can't seem to get around. There's a chapter on AI on Game Coding Complete, and I still have about half of Programming Game AI By Example to read, so I'm hoping between those, I'll find some intelligent solutions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've also been talking with my partner about our framework, and once we finish all the cores, we're going to extend it to make it more of an engine to power the games we create. We're going to follow the engine structure set forth in Game Coding Complete.  I must say it seems to be a very flexible way to set up an engine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now, I'm out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5661472172007194930?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5661472172007194930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/new-great-book-d.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5661472172007194930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5661472172007194930'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/new-great-book-d.html' title='New Great Book =D'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5563486907317450941</id><published>2010-07-14T13:48:00.001-07:00</published><updated>2010-07-14T13:54:19.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><title type='text'>Forgot to Post About Some Stuff!</title><content type='html'>Well I'm pretty sure there's some stuff I forgot to mention in my last post!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I made two new videos, but here's the problem: They are too long! Your probably thinking, "Well trim them?" but I can't find any (free) software to edit a video that doesn't ruin the quality when it's rendered. One of them is the next SDL Video Tutorial, so I just need to get a chance to trim it, and it will be up (I've had this done for quite some time now!). The other video shows off the new stuff in Charge.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I've implemented a skeleton of each enemy, so now I just need to program some specific AI. Right now, I'm still planning groups out. I started implementing them, but the implementation was getting real ugly, so I wiped it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So onto what I HAVE done. I made a Health System, so now the player has a health box, and lives system is in place (but has no effect for testing purposes). Also, I have a power up system. Currently there is only health and weapon powerups, but the system actually works well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now I need to put a lot of work into this AI. Really this is going to be the hardest part of the programming.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Honestly though, I can't wait to finish it. I'm excited to get some experience with AI =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now =D.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5563486907317450941?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5563486907317450941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/forgot-to-post-about-some-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5563486907317450941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5563486907317450941'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/forgot-to-post-about-some-stuff.html' title='Forgot to Post About Some Stuff!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8375477470655897477</id><published>2010-07-07T09:49:00.000-07:00</published><updated>2010-07-07T10:17:32.639-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='NDS Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Portable Framework'/><title type='text'>AI Design</title><content type='html'>Well I've been thinking a lot about Charge, and I think I'm finally starting to get to a good point with the AI.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So my StateMachine holds 3 states: Current, Previous, and Global. The global state is going to handle shooting and a few state changes. The global state is where the shared memory will be mostly utilized, but shared memory will definitely be utilized in some current states as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another thing I've been planning out is Enemy Groups. So an Enemy Group will hold a few Enemies (let's say 5 for example), and will control the behavior of the Enemies within the group. In this way, the Group can examine the shared memory, and act upon it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also plan to have a SetFormation function. This function will most likely take an enum as it's parameter that describes the type of formation. As of now, I'm thinking horizontal, vertical, V, forward slash, and back slash. I may create more as I go along, but I think this is a good starting point.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've added a 'destination' for each enemy, and this will make it super easy to set formations. So when the formation is set, it will use the first enemy as a reference point. Then it will make a few calculations to find what the destination of all the other enemies should be. If any points are offscreen, each destination point will be offset to make sure they stay on screen. After the destination point is set, the state will be changed to a "MoveToDestination" State, which will handle moving to the destination.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the moment, I'm unsure of whether I should then go to an Idle state, or Revert to the previous State. I'm leaning towards the former, because the previous state may be a state that was only meant to be temporary, and shouldn't be reverted back to. It's an easy change between them (only a single line of code), so if I decide to switch, there won't be any problem =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only thing I really need to work into my systems, is the Groups. When planning for AI, I never really thought about groups. It will be easy to insert, I'm just unsure as to whether I should make a separate system/handler for the groups, or just make it a part of the EnemySystem. I'm leaning towards the former on that as well, because, I think it will provide more flexibility.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now that my AI stuff is out in the open, I guess I should talk about my other project(s).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'm like 99% sure I've mentioned the cross platform framework a friend and I are working on. We've just come out of the design phase, and I'm just basically making the virtual classes. Since there are no implementations with this, and all functions are pure virtual, it's really pointless to make any actual code files (.cpp extension). After I finish all these headers, I'll review them with my partner, and then he'll start fleshing out the iPhone implementation, while I work on the Windows/Mac/Linux implementation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now, I want to propose a new 'core' to be added to the framework. I haven't talked to him about it yet, because I just thought of it last night (which is going to lead me into my next 'project'). I want to make a sort of Resource Core... I hesitate to call it a Core... In fact, I'm just going to refer to it as Resource Management System (RMS for short). The reason I think this is a very important addition to the framework itself, rather than just something that is separated from the framework, is because we're geared towards embedded systems. Just last night, I purchased a new DS Flash Card (the Super Card DS Two). For systems such as the DS, I'm not too certain if it's plausible to add them to the framework. One way to help this along though is an RMS. Many embedded systems such as this have much less RAM and VRAM, so it becomes very important to manage resources differently. For example: On a PC, you can probably load hundreds, perhaps even thousands, of different images. The DS, works very differently though. It supports up to 128 sprites, not including backgrounds. For backgrounds you can have 4 (one to be used for text). So it would be beneficial, and probably necessary, to free resources at different times on different embedded systems.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So for those of you who don't know, my coding started with PAlib and NDS development. I never really got far in it, and before long, I lost my flash card. A relative gave me a 50$ card, that can't be combined with any other source of money, nor reloaded. I was going to buy 2 programming books, but the total came to like $51, and I wasn't just going to buy one, so a friend told me to buy a flash card, so I did, and was also able to get a 4GB micro SD... now I have exactly $2.22 left on the card. But I figure I should use it, so I'll probably pick up NDS coding on the side.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now, ciao!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8375477470655897477?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8375477470655897477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/ai-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8375477470655897477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8375477470655897477'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/ai-design.html' title='AI Design'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8080842787003328560</id><published>2010-07-01T22:35:00.000-07:00</published><updated>2010-07-01T22:44:20.894-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><title type='text'>More Charge Development</title><content type='html'>So I worked again on Charge today, and I finished something =D.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking back at a few previous posts, I noticed I wanted to make a Level System, I had already made a level class, but no load function. So I shaped out a Load function, and then made a Level System.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had to tweak my Enemy System to keep count of how many Enemies it had. I couldn't just get the size of the list, because some of the enemies were likely to be NULL. The reason some could be NULL is for two reasons:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) If I remove an element while iterating, there's a high chance that I will have some access violations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) In terms of efficiency, it's better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I now have a variable to keep track of how many enemies exist. Each frame, after updating everything, I check to see how many enemies exist. If it's 0, then I load the next level.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Levels will go in an order like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Level1.map&lt;/div&gt;&lt;div&gt;Level2.map&lt;/div&gt;&lt;div&gt;Level3.map&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I don't even have to specify each map, it will just continue to load them. I also have a max levels number hard coded in.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The level files are simple, a format like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Background: space&lt;/div&gt;&lt;div&gt;ECount: 2&lt;/div&gt;&lt;div&gt;Enemy 1 30 30 End&lt;/div&gt;&lt;div&gt;Enemy 1 50 70 End&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only thing I really need to do is switch to a 'transition' state, then revert. This way, it won't seem choppy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But that's what I accomplished for today. Not too sure of what I have planned for tomorrow, but hopefully I'll get something done =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8080842787003328560?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8080842787003328560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/more-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8080842787003328560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8080842787003328560'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/07/more-charge-development.html' title='More Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6689270506659376966</id><published>2010-06-30T22:20:00.000-07:00</published><updated>2010-06-30T23:22:51.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='More Development'/><title type='text'>Back from Vacation!</title><content type='html'>Sorry for the delay! I was on vacation for practically two weeks. But now I'm back and refreshed; ready to code!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I have two projects I'm working on right now:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Charge&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a New Framework...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you might be wondering why I'm making yet ANOTHER framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well this framework is different! A friend and I will both be working on it, and we intend it to be a high level library. So basically it will consist of 5 basic 'cores':&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System Core&lt;/div&gt;&lt;div&gt;Input Core&lt;/div&gt;&lt;div&gt;Video Core&lt;/div&gt;&lt;div&gt;Audio Core&lt;/div&gt;&lt;div&gt;Network Core&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And these cores will be virtual, so that different implementations can exist. All the base cores will be stored in a Platform namespace, and then any implementation would be stored in another namespace; Then there'd be lines like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Platform::BaseVideoCore = new Platform::VideoCore();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And at the top of a certain file, you'd do something such as:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;namespace Windows = Platform;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that your VideoCore class in Windows namespace can now be called through the platform namespace.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This way you can use the same code throughout.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My friend and I want to make some sort of top down game with it, and make PC and iPhone implementations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll be working on the PC implementation using SDL, OpenGL, and perhaps DevIL to load images (but I'm thinking of just sticking with the SDL_image extension).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, back to Charge stuff! I fixed up the problems with the framework. There were just a few issues with not asserting pointers to make sure they had a valid value. Now that it's all fixed, Charge development can continue. I remember outlining what I had planned next for Charge, so I'll go back and check that out, and then start working. But for tonight I'm done, so peace =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6689270506659376966?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6689270506659376966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/back-from-vacation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6689270506659376966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6689270506659376966'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/back-from-vacation.html' title='Back from Vacation!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1562033731673102763</id><published>2010-06-16T21:19:00.001-07:00</published><updated>2010-06-16T21:22:20.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='New Project'/><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL Video Tutorials'/><title type='text'>New SDL Video Tutorials Up</title><content type='html'>So hey, go check my youtube channel to watch my new SDL Video Tutorials! I have two up so far, with a third already made. But I'm running into a problem.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I trimmed the video with VirtualDub, and Youtube will not upload it. So I need to find another program to trim it with, but that will probably not be tonight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, UPS is nearly finished, I'm just looking for music now, which I'll find tonight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll be gone for a few days, because I'm going camping, but I'll be sure to get all that wrapped up when I come back.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also I'll only be back for 2 days, then I'm taking a 1 week vacation. Once I come back from that, Charge Development will start back up, along with a new project that I'm diving into =D.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1562033731673102763?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1562033731673102763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/new-sdl-video-tutorials-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1562033731673102763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1562033731673102763'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/new-sdl-video-tutorials-up.html' title='New SDL Video Tutorials Up'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8690777929423248189</id><published>2010-06-11T08:24:00.000-07:00</published><updated>2010-06-11T08:29:51.757-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Unintuitive Physics Competition'/><title type='text'>Updates for UPS (and 50th blog post !)</title><content type='html'>Well I got some work done on UPS, so here's what I've done:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-2 Players&lt;/div&gt;&lt;div&gt;-Bouncing Slimes&lt;/div&gt;&lt;div&gt;-Ice tiles&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I posted 2 videos, one shows all of them, and it shows a glitch I was having with the ice tiles. Later, after posting the video, I realized the problem, and reposted a video showing what caused the problem, and showing it fixed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So here's the two videos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=1WGcSUCp9nY"&gt;UPS Iteration 3&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=GHYO90U9yyI"&gt;UPS Iteration 3 (Ice Fix)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the next, and final iteration, will be the last =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It will have music, sounds, and perhaps slightly improved graphics.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It seems Moosader may be extending the competition, though, so I may continue to add features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But that's all for now, have a good one =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8690777929423248189?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8690777929423248189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/updates-for-ups-and-50th-blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8690777929423248189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8690777929423248189'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/updates-for-ups-and-50th-blog-post.html' title='Updates for UPS (and 50th blog post !)'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1921740107137235632</id><published>2010-06-05T23:34:00.000-07:00</published><updated>2010-06-05T23:39:43.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>OpenGL works 0.o???</title><content type='html'>Well, someone on the Elysian Shadows posted an OpenGL app a little while back, and I tried to run it without even thinking.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after I amused myself by running it, I realized, "OpenGL has never worked on my computer...". So I started playing around with different things, and apparently, OpenGL code compiled with the MinGW compiler works =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'll probably have to do some code porting, but I DEFINITELY want to upgrade my framework to use OpenGL for the 2D graphics.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before I do that though, I want to wipe my computer. I'm going to back up everything soon, and wipe it. I have so much crap cluttering up my computer, and I just need to clean it. This way I can set up SDL for Code::Blocks in a somewhat elegant manner. As of now there are random folders scattered across my computer that all have different SDL and SDL extension(s) files.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'll definitely be working on UPS, studying up on OpenGL, extending the framework, and working on Charge!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: I won't extend my framework to use OpenGL until AFTER Charge, so it won't affect Charge =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now =D, just thought I'd let you in on today's success =p.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1921740107137235632?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1921740107137235632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/opengl-works-0o.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1921740107137235632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1921740107137235632'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/opengl-works-0o.html' title='OpenGL works 0.o???'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4175570475061375942</id><published>2010-06-04T21:13:00.001-07:00</published><updated>2010-06-04T21:15:46.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><title type='text'>Update on UPS</title><content type='html'>Well, I got the bouncing working right (or wrong I should say, because it's 'unintuitive'), and I also successfully created two players.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've decided that for every Slime that's grabbed, EVERY player will have the held effect. So that just gives more room for hectic game play haha.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would post screen shots, but there isn't really any much to show at the moment. Tomorrow I have to take my SAT test, but afterwards I'll try to work on the slippery tiles. Once I have those done I'll post an update.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well I gotta go to sleep so I can wake up early enough. Peace out =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4175570475061375942?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4175570475061375942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/update-on-ups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4175570475061375942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4175570475061375942'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/update-on-ups.html' title='Update on UPS'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-2925943135837080592</id><published>2010-06-03T06:43:00.000-07:00</published><updated>2010-06-03T06:46:04.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='End of School'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='Summer'/><title type='text'>Last Day of School</title><content type='html'>Well, today is the last day of my Junior year of Highschool, I have a Spanish 3 final to take, and then my Junior year is officially over.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had great times this year.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, over the summer, I'm going to be running, playing tennis, and working out every day, and I'll also be programming a lot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope to finish Charge early on in the Summer, and begin something bigger and better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This year, a lot of time went into school work to get a 4.5 GPA, but next year, I'm going to tone it down a bit, to give me more time to program.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this was just a quick update to let you know that I'll have more time soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also I want to remake all my SDL Video tutorials this summer =D!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-2925943135837080592?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/2925943135837080592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/last-day-of-school.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2925943135837080592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2925943135837080592'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/06/last-day-of-school.html' title='Last Day of School'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6238564474636914016</id><published>2010-05-31T10:09:00.000-07:00</published><updated>2010-05-31T10:10:39.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moosader'/><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Unintuitive Physics Competition'/><title type='text'>UPS Iteration 2</title><content type='html'>Well here's a video of Iteration 2:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=ELRyThq0V_8"&gt;Link&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Look at the video description for more information!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6238564474636914016?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6238564474636914016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/ups-iteration-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6238564474636914016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6238564474636914016'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/ups-iteration-2.html' title='UPS Iteration 2'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8515258168638066648</id><published>2010-05-27T21:18:00.000-07:00</published><updated>2010-05-27T21:20:13.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moosader'/><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Unintuitive Physics Competition'/><title type='text'>UPS Iteration 1</title><content type='html'>I just posted a new video on youtube showing Iteration 1 of my entry to Moosader's Unintuitive Physics Competition. Hopefully soon, I'll have iteration 2, which should have much more to show off =D!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, here's the &lt;a href="http://www.youtube.com/watch?v=SMm80GQn3iA"&gt;link.&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8515258168638066648?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8515258168638066648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/ups-iteration-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8515258168638066648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8515258168638066648'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/ups-iteration-1.html' title='UPS Iteration 1'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-7016567796212515904</id><published>2010-05-27T06:40:00.000-07:00</published><updated>2010-05-27T06:48:06.520-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='UPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Competition'/><title type='text'>Charge On Hiatus Temporarily...</title><content type='html'>I'm starting to work on my entry for LusikkaMage's (AKA Moosader, Rachel, etc) Unintuitive Physics competition.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The reason I won't be working on Charge, is because every time I have a project using my framework, I tend to change things with my framework to improve it. If I do that with two separate projects, then there will be problems because I'll have two separate versions, which both have important changes that the other doesn't have.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really want to avoid this, so I'm just going to try to as quickly as possible get my entry done, then move the changes back.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But rest assured, I doubt this will happen again. As soon as I'm done with my entry, I'll begin working on the MusicBank, and Text System. Once those are done, I'll compile the framework into a lib.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So my entry, for any that don't know, is going to be called Unintuitive Pickin' Slime. It's nothing special. Basically, every 5 seconds a new slime will spawn. For each slime you collect, you get a point, but each slime has an effect. Gravity will change directions, your controls will be swapped, directional speed will change, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The graphics will suck. As of now, the player is only a simple ball. And I probably won't do anything else with it graphics wise. I would love to add animations, and the like, but I'm imagining the problems, and how much time I have to complete the game, and I don't really want to go that in-depth for something such as this.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I finish the first iteration (hopefully today), I'll make a video. But that's all for now I suppose, later.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-7016567796212515904?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/7016567796212515904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/charge-on-hiatus-temporarily.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7016567796212515904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7016567796212515904'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/charge-on-hiatus-temporarily.html' title='Charge On Hiatus Temporarily...'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6991844170083150345</id><published>2010-05-23T18:03:00.000-07:00</published><updated>2010-05-23T18:06:36.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>New Video</title><content type='html'>Just wanted to say that I uploaded a new video =D!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a bit long, but here it is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=rDTDwS0flUg"&gt;Link&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6991844170083150345?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6991844170083150345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/new-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6991844170083150345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6991844170083150345'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/new-video.html' title='New Video'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1674111538663150672</id><published>2010-05-21T15:08:00.001-07:00</published><updated>2010-05-22T14:13:33.901-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><title type='text'>Configuration File Added to the Framework!</title><content type='html'>Well, for the past few days, I've been trying to get my framework to support reading in an ini file for configuration properties such as window width and height.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used minIni, and compiled it into a static library. When trying to put it into play, I kept getting a strange access violation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After much code reviewing, I found out that I had used or, instead of and (|| vs &amp;amp;&amp;amp;). So when one thing became true (in which I wanted EVERYTHING to be true), it short circuited and returned a true value, and didn't even run the other functions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This caused a lot of things to not be initialized when they were used, and that's what caused the access violation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So to go back and touch up on the ResourceSystem, I'm going to actually flesh out the SoundBank some time in the near future, then add a MusicBank, and a FontBank. The former two will be quite easily implemented, but I need to put some thought into the latter. To make a font bank, I need to make a text system of sorts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the text system, I REALLY want to implement a system so that I can confine the text to a box.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I'm done with this, I'll clean up the framework, and perhaps release it =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But anyways, onto Charge... The next thing for Charge is to finish up the WeaponSystem, so that different leveled weapons work right. I also need to fix the bullet speed and direction, which will allow some more interesting weapons. After that, I want to create power up system, and sync it with the weapon system and EnemySystem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm still unsure of how I should make my LevelSystem, but I definitely need to put some more thought into it before I jump head first into it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I have these 3 things done, I'll begin fleshing out each enemy, then programming their specific AI. That's probably what will take the most time, because I'll have to implement some sort of shared memory probably, but that won't be too hard to do, due to the flexibility of the 'engine'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's all for now, I have to research a college and work on a Calculus project, so peace out =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1674111538663150672?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1674111538663150672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/configuration-file-added-to-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1674111538663150672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1674111538663150672'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/configuration-file-added-to-framework.html' title='Configuration File Added to the Framework!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8617460658960057444</id><published>2010-05-16T13:21:00.000-07:00</published><updated>2010-05-16T13:40:01.443-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Resource Management'/><title type='text'>Resource System Mostly Done =D</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HTpoVIxYKtw/S_BXtTJilDI/AAAAAAAAADA/FyTBSDWbpLs/s1600/Charge2-SS4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 268px;" src="http://2.bp.blogspot.com/_HTpoVIxYKtw/S_BXtTJilDI/AAAAAAAAADA/FyTBSDWbpLs/s320/Charge2-SS4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5471969983001170994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;So really, the Resource System is just a front to access the ImageBank and SoundBank. I've finished the ImageBank, and have it exactly how I want it =D.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, when you want a surface you do this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;FF::Surface* pSurf = FF_ResourceSystem-&gt;GetImageBank().GetSurface("Ship");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So then I have it loop through each file extension I support, in a certain order. If the load fails, then it moves on to the next one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If it happens to get through all the extensions, and doesn't load any of them, then instead of returning you the image you probably expected, it will give you a bitmap that says the word "Error".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this ImageBank guaruntees that only one of each image is loaded, and that it's all cleaned up =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh, it also has a cap of 100 images as of now. But that can be easily adjusted =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The SoundBank isn't finished yet. Really the code will be the same, I just need to look at the Mixer Documentation and find out what formats I need to support.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only other thing I really think I may need, is something to manage Music. I'm not sure if it needs it's own bank, because there can only be one piece of music playing at a time. But then again, when music changes, I don't really want lag from loading the new piece.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But that's yet to be decided. At the moment, I'm thinking I'll make a bank for it, but with a much lower cap, like 25 or something.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But all I have to say is, it may have taken a while to get this resource management stuff figured out, but it is WELL worth it =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now to explain the picture really quickly. Well I added another player character, but purposely passed in an image that didn't exist. So it returned the Error surface. It may be hard to see, but the Error is right next to the red star.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, I believe I'm going to make a video, hopefully it isn't super laggy like the last one I made =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8617460658960057444?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8617460658960057444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/resource-system-mostly-done-d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8617460658960057444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8617460658960057444'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/resource-system-mostly-done-d.html' title='Resource System Mostly Done =D'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HTpoVIxYKtw/S_BXtTJilDI/AAAAAAAAADA/FyTBSDWbpLs/s72-c/Charge2-SS4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6808872787815390340</id><published>2010-05-14T18:26:00.000-07:00</published><updated>2010-05-14T18:30:52.902-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resource Management'/><title type='text'>Resource Management</title><content type='html'>Well, since you couldn't tell from the last screen shot, I'll tell you that it was starting to get laggy. Every new bullet, and every new enemy each had it's own surface, which is quite ridiculous I must say. So right now, I'm adding a resource manager to my framework.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm thinking that the resource manager will have a graphics and sound component and will work something like so:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ImageBank-&gt;GetSurface("SomeImage");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what I want it to do from here, is search to see if it has that image, if it does, return it, if not, I have it return NULL at the moment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ideally, I'd like to be able to not have to specify the extension, and write some code to search through the directory to find the file with that name, grab it's extension, and then load it in, so I don't have to worry about extensions and such. I'm finding  this to be rather hard, as I want to maintain my code's portability, but any method I've find to search through a directory is platform dependent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'm working on that now, if I can't find a good solution, I'll just skip it, and leave it as is, but for now, I'm determined to find a way!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6808872787815390340?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6808872787815390340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/resource-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6808872787815390340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6808872787815390340'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/resource-management.html' title='Resource Management'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-2937722130042771664</id><published>2010-05-08T13:29:00.000-07:00</published><updated>2010-05-08T15:18:22.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><title type='text'>CollisionSystem + EnemySystem Done!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HTpoVIxYKtw/S-XjFpuvb6I/AAAAAAAAAC4/iZAaZ0bgGb8/s1600/Charge2-SS3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 268px;" src="http://1.bp.blogspot.com/_HTpoVIxYKtw/S-XjFpuvb6I/AAAAAAAAAC4/iZAaZ0bgGb8/s320/Charge2-SS3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5469027008752086946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HTpoVIxYKtw/S-XjBzJpF5I/AAAAAAAAACw/A7wKdMtz5x8/s1600/Charge2-SS2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 268px;" src="http://4.bp.blogspot.com/_HTpoVIxYKtw/S-XjBzJpF5I/AAAAAAAAACw/A7wKdMtz5x8/s320/Charge2-SS2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5469026942561359762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Well, I told myself on Thursday, that I would finish programming an enemy, and then make a post. But then I realized, I might as well make the EnemySystem real quick as well. Making the EnemySystem carried on into Friday, and I thought to myself: "I want some collisions before I make a post!"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I started creating a collision system. I had a few issues with iteration. I was removing elements in a iteration, making the iterator invalid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I finally fixed it all up and now it works wonderfully!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To make the enemy, I also made a StateMachine, and base state template.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So as of now, there are two simple states for testing purposes: MoveLeft and MoveRight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh yeah, you can also press 'e' to add new enemies, which helps testing some =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So my next task is to make a LevelSystem. The LevelSystem will be able to Load levels from a file. I'm generally thinking the format will be something like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;Background filepath&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Count 5&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enemy 4 100 20&lt;/div&gt;&lt;div&gt;Enemy 3 100 40&lt;/div&gt;&lt;div&gt;Enemy 2 200 60&lt;/div&gt;&lt;div&gt;Enemy 5 300 50&lt;/div&gt;&lt;div&gt;Enemy 1 120 50&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'll be able to retrieve the background, the number of enemies in the level, and each enemy will be created based on the information in this. The different TYPES of enemies will be hard coded in, and so I imagine that there will only be 3 pieces of data needed: AI level (which determines the type), x and y coordinate to determine it's position. The LevelSystem will render levels, and scroll the background image =D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after the LevelSystem is finished, I'm going to adjust the WeaponSystem to make it easier to create different weapon types. Then I'll create a Powerup System to work with the WeaponSystem to adjust it to different weapons.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I imagine I'll create some sort of life system for playables. I'll also have to sync that with the CollisionSystem to create Life, and Lives. Then I'll probably sync it with the power up system to add health power ups.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last thing (programming wise) that I want to worry about, is the AI. I just want to get everything framed up, so I can go in, and not focus on so much speculation, and just worry solely about the AI. Because of how I want the game to play, I'm thinking of implementing some type of "Shared Memory".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So for those of you who don't want to go back and find out how I want the game to play, here's a little explanation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There will be 5 enemy types:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Grunt&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Drone&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Revenant&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Protector&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Mother Ship&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, the Grunt will have incredibly low AI. Most of what it does will be entirely random, but it will be so random that it can actually be slightly dangerous. The Revenant will have the highest overall AI, with bullet dodging, shooting, path execution, etc. The Drones will have AI in-between Grunts and Revenants. Basically some things it will 'intentionally' do and some things will just be random.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Protectors and Mother Ships will have a sort of 'team playing' together, so I'll have to implement a way for them to work together. But basically, each Mother Ship will hold a timer, and when that timer goes off, it will create an enemy. It will be able to create any enemy type excluding itself. The Mother ship will NOT be able to shoot, but it will be able to dodge bullets like no other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the Protectors, my idea is to have them sense a player's bullet through shared memory, and then calculate who's closest, and calculate a velocity that will get the Protector to take a bullet. Aside from taking bullets, I suspect Protectors will be somewhat like Revenants.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the object of each level will be to get rid of all enemies, so you must take out the Mother Ships. As the levels progress, more Mother Ships will be there, and they will create enemies faster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I think with all this, it will provide for some interesting game play... But for now, I've done what I need to for the day... Time to get ready for Prom tonight =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-2937722130042771664?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/2937722130042771664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/collisionsystem-enemysystem-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2937722130042771664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2937722130042771664'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/05/collisionsystem-enemysystem-done.html' title='CollisionSystem + EnemySystem Done!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HTpoVIxYKtw/S-XjFpuvb6I/AAAAAAAAAC4/iZAaZ0bgGb8/s72-c/Charge2-SS3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4185581826115464248</id><published>2010-04-24T21:38:00.001-07:00</published><updated>2010-04-24T21:49:36.659-07:00</updated><title type='text'>I haven't forgotten!</title><content type='html'>Well, I've been terribly busy this week, and I probably will be all of next week, but even if I don't have time to code, I do still think about how I'm going to implement different things all the time.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So as I think I have said I want to implement the EnemySystem next. But to implement the EnemySystem, I need to implement an Enemy base class. But the Enemy base class needs to have a StateMachine, and the StateMachine needs to have a base state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So For now, I'm reviewing Programming Game AI by Example to get ideas for a 'universal' base state class and state machine. Once I implement these, I need to think more about how AI will work before I implement the enemy base class. I'm thinking that I'll just have States made specifically for each type of enemy, so that lower leveled enemies can't use them, OR make universal states for each type of enemy, and then have a specified AI level for each enemy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But that's what's going on now... Life's real hectic with the band, Prom, SATs, standardized tests, and everything else I have going on... But I'll definitely be putting a lot of thought into it, so that when I DO go to program, I get a lot done =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4185581826115464248?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4185581826115464248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/i-havent-forgotten.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4185581826115464248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4185581826115464248'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/i-havent-forgotten.html' title='I haven&apos;t forgotten!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-3226152968643675806</id><published>2010-04-17T13:59:00.000-07:00</published><updated>2010-04-17T14:12:10.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><title type='text'>Coding Has Commenced!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HTpoVIxYKtw/S8okHWpdGSI/AAAAAAAAACo/AhssAECNGx8/s1600/Charge2-SS1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 268px;" src="http://3.bp.blogspot.com/_HTpoVIxYKtw/S8okHWpdGSI/AAAAAAAAACo/AhssAECNGx8/s320/Charge2-SS1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5461217206897285410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;So, I've gotten through tons of design and now I'm ready to start coding.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Instead of creating my ApplicationSystem inside my main function, I have now made it global. This way each Entity can easily get the dimensions of the window, so that they can check for themselves, if they are outside or not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I have an ActorSystem, which holds the PlayableSystem. The PlayableSystem updates and renders playable characters. The Playable class holds an array of 5 SDLKeys, so it's easy to define another player =D!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As of now, the WeaponSystem allows 10 bullets (I haven't programmed anything besides normal bullets).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My next task that awaits is to create the enemy base class, and create some type of enemy. Then I will code the EnemySystem and make sure everything works with some sync.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, I will need to make a CollisionSystem, which will take a reference to the PlayableSystem, and EnemySystem (both contained in the ActorSystem), and check for collisions between them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm thinking I'll check collisions in this order:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Playables vs. Enemies&lt;/div&gt;&lt;div&gt;-Playable Bullets vs. Enemies&lt;/div&gt;&lt;div&gt;-Playables vs Enemy Bullets&lt;/div&gt;&lt;div&gt;-Playable Bullets vs Enemy Bullets&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, I'll probably shape the LevelSystem which will be real simple. I plan for it to have a background, and scroll that background, to give a nice little effect. I also want it to load in levels from files, which will contain the background, and information regarding enemies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I definitely want to start extending the Playable Class after I make the LevelSystem. I'll make health and/or lives, not sure which yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I'll start creating different types of weapons, and make sure it's all compatible with the WeaponSystem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's the only update I have for now! Until Next Time!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-3226152968643675806?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/3226152968643675806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/coding-has-commenced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3226152968643675806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3226152968643675806'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/coding-has-commenced.html' title='Coding Has Commenced!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HTpoVIxYKtw/S8okHWpdGSI/AAAAAAAAACo/AhssAECNGx8/s72-c/Charge2-SS1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8023586861612909095</id><published>2010-04-10T23:00:00.000-07:00</published><updated>2010-04-10T23:17:46.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Rambling'/><category scheme='http://www.blogger.com/atom/ns#' term='Random Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Design'/><title type='text'>A Post Where I Ramble On About Ideas...</title><content type='html'>So maybe you noticed, I changed the blog template. I got sick of the dark theme of the last one, so I chose one that was a bit lighter.&lt;br /&gt;&lt;br /&gt;Anyways, the current ideas rambling around in my head are regarding Players and Weapons.&lt;br /&gt;&lt;br /&gt;First of all, I'm now using a position vector + width/height variables instead of a rect, which makes a few things a bit simpler.&lt;br /&gt;&lt;br /&gt;Also, I've removed the IDs from Entities. Seeing as I'm using a list (No random iteration) to hold the entities, the ID would become virtually useless, and would serve no purpose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyways, so onto the rambling thoughts. So I'm at a friend's house right now, and don't have access to any IDE, and I don't feel like downloading one on his computer. He's playing Call of Duty MW2 at the moment, and I'm rambling on =D.&lt;br /&gt;&lt;br /&gt;So with players, I definitely want to make it at least two player co-op, but I may add more. To do this, I wanted to make it quite easy to create player control schemes. In my other games, I simply hard coded the different controls in, and it wasn't the slightest bit graceful.&lt;br /&gt;&lt;br /&gt;To accomplish this, I'm going to have the player hold 5 SDLKeys, 4 for the standard directions, and the 5th for shooting.&lt;br /&gt;&lt;br /&gt;I'll of course have some keys blocked such as ESC and 'p' (which will be used for exiting and pausing). So with that I'll be sitting pretty.&lt;br /&gt;&lt;br /&gt;The other thing I've really been thinking about is the WeaponSystem, and how it will work. I've decided that all Entities will be registered into the EntitySystem. The EntitySystem will Update and Render everything. Alongside the EntitySystem will be the PlayerSystem, which will handle input for any players. The WeaponSystem will be invoked via the PlayerSystem or AI. When invoked (e.g. when player or enemy decides to shoot), the WeaponSystem will initialize the bullets, based on a flag. This flag will dictate what type of weapon that Actor currently holds, and will create the correct bullets/weapon accordingly. Then the bullets themselves will be updated/rendered via the EntitySystem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I'm really excited for this, since everything seems to be falling into place nicely =D!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8023586861612909095?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8023586861612909095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/post-where-i-ramble-on-about-ideas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8023586861612909095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8023586861612909095'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/post-where-i-ramble-on-about-ideas.html' title='A Post Where I Ramble On About Ideas...'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4222723774840190744</id><published>2010-04-09T21:23:00.000-07:00</published><updated>2010-04-09T21:57:51.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Revival'/><title type='text'>The "Revival" of Charge</title><content type='html'>As I said, here's the post where I'm going to talk about my second attempt at a shooter (quite the same one, really).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm still in the planning stages, and I have spent quite some time there, but I also want to invest a lot more time into it still.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I really want to focus a lot of time into is System access. Since I've quite literally depleted my use of Singletons/globals, I have to make sure each System has access to any other Systems it needs to use. The biggest problem I'm finding with this is with the ApplicationSystem. For playing audio or rendering a class needs access to the ApplicationSystem. But I don't want every single object that needs to be rendered, have a pointer to the ApplicationSystem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Really I'm trying to find an elegant way to handle rendering. Because as of now, here's what I have been thinking:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Render method from current state is called&lt;/div&gt;&lt;div&gt;-Current state calls render method from ActorSystem (Actors can be NPCs or Players)&lt;/div&gt;&lt;div&gt;-ActorSystem iterates through it's list of Actors, and grabs it's surface, then renders it&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now this is all fine and dandy, but the kink I'm hitting is the ActorSystem itself. So what about rendering the bullets? Then I thought, hey, I can make it an EntitySystem instead (Entities are anything that moves). But then I would be updating/rendering from the EntitySystem, and the Actor would have little control over it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I could just make a 'WeaponSystem' and call an accessor to it from the ActorSystem. But what if the Actor doesn't have a WeaponSystem?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So through this, I'm finding that in many places where I would 'just do it' I'm starting to think ahead at the consequences, to find the best method of implementation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I'm typing this, I'm actually starting to like this idea:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Create a weapon system&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-WeaponSystem would dictate what weapon the holder has currently&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Through this, the WeaponSystem would set up the children bullets, which would then be&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;registered into the EntitySystem.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-Everything is actually Updated + Rendered through the EntitySystem&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So through this, anything that is NOT player controlled is all nice and set up. So for Player controlled, I will need to create a PlayableSystem or something of the sort.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lately, around the ElysianShadows forum, many people have been posting about developing an Engine, and I'm so happy for all the great information I've gotten from them (Notably GroundUpEngine and GyroVorbis - I'll have links to their Youtube Channels below!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But this whole idea of Systems came from something GyroVorbis said. He was talking about how everything is handled, like a CollisionSystem handles collisions, and needs access to an EntitySystem and TerrainSystem which control Entities and Terrain, respectively. That's when it really hit me, I need to stop being such a dip, and actually get something like that going. Albeit, I probably followed the same form in a MUCH LESS elegant way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, that's just what happens to be rambling around in my head regarding Charge at the moment. As for now, I'm going to get back to studying, and maybe some more design tonight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hopefully I'll remember to update again next week!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I said: &lt;a href="http://www.youtube.com/user/GyroVorbis"&gt;GyroVorbis&lt;/a&gt; and &lt;a href="http://www.youtube.com/user/hebronsawyers"&gt;GroundUpEngine&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Be sure to check both of them out if you haven't already, they are both AWESOME projects =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4222723774840190744?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4222723774840190744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/revival-of-charge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4222723774840190744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4222723774840190744'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/revival-of-charge.html' title='The &quot;Revival&quot; of Charge'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8919407573884108637</id><published>2010-04-09T17:48:00.000-07:00</published><updated>2010-04-09T18:13:30.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Framework Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='New PC Fund'/><category scheme='http://www.blogger.com/atom/ns#' term='Come Back Post'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiatus?'/><title type='text'>Terribly Sorry for Lack of Posts</title><content type='html'>Well, school really picked up again, I'm trying to maintain that 4.5 GPA, and I just have a lot to do. But I keep coming back, because I want to maintain this blog in some way.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I know I probably have a lot of downtime, and then make a lot of posts quite frequently, but I'm going to try to at least post something each week, even if it isn't programming related - Starting with this post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I have been working lately, on many different things, so I'll try to cover everything I've done since the last post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So since the last post, I cleaned up my framework real nice, and started making a few small demos to test every piece of it. Then I created a breakout game. I left it unfinished purposely, because I have a Software Engineering club that wants to get into game development. So In this breakout game, I've tried to implement a little bit of everything, and I'm going to run them through it after they make a couple simple games/demos and then have them finish it (really the base of it is done, only thing left is polishing really).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought it had some cool effects, like the blocks decrease in color intensity every time they are hit, and burst into particles when they are destroyed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But as I was making this game, there were two things I noticed. Firstly, I found that I need to start planning things out more, and start using Systems (or 'Managers') to control everything, and have all those systems access each other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second thing I noticed, was that my framework actually had some inconsistencies that really really bugged me. There were also some excessive singleton use that just didn't need to be there, so I removed it. The only singleton in the framework now, is the debugger, but I have plans to make States singletons, just because it makes it much easier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after fixing all that framework stuff, the structure of it starts with the ApplicationSystem, which holds a pointer to a VideoSystem, AudioSystem, InputSystem, and StateMachine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm quite digging the new structure of it, so I'm excited to continue. So I am now *officially?* reviving the Charge project, but I have now planned it out so much more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem I faced with my first attempt, was that I had some very specific ideas, that, in my mind, made Charge what it was. I came across problems because my design was very hasty, so when something wouldn't work well, I'd try to recode portions. Then after that failed a few times, I'd try to make some horrible code to just force it to work. After a while, this quickly fell apart, and that's when I realized I need something like a framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As of now, I would definitely not say the framework is done. I have completely scrapped the idea for a GUI portion, but I still want some text stuff (I removed it because it was crap). I like the idea of having a Bitmap Font Engine along with TTF Fonts, but we'll see what happens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'm going to make another post tonight talking about what I want to do with Charge, and how it's all going, but for now I want to talk about another small project I created.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I made a level editor and it works quite well I must say. There's just one problem - It has no GUI. So I'll have to find a simple GUI lib to use; I was thinking wxWidgets, or perhaps just recode it in C#, because it'd be simple... but then I'd lose cross platforming =(. Anyways, all of the features are done, it just needs a GUI lib to access them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the only other thing I can say, that I'm not sure that I've said, is that I want to start moving into OpenGL ASAP. I have a book that I've had for 2 years, and it is great I must say, but apparently my integrated graphics doesn't support OpenGL. So if I want to get that hardware acceleration, I need to either A) Buy a new computer, B) Use DirectX, or C) Wait for SDL 1.3 and hope it's Windows implementation uses DirectX over OpenGL. I also bought a DirectX book thinking I would like it, but I must say... I hate it. I dabbled in it, and made some small base code, and even made a small game, but I felt like it was too much work to be giving up on cross platforming.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, because I've chosen option A, I've been saving up some money. I don't get too much money, but I have saved up $300 so far, and I'll probably have $400 - $500 at the end of the year. I'm thinking I'll probably need $600 because I have to buy a monitor as well, but we'll see. Maybe I can get a job over the summer =D? I doubt it =/.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's what has been going on, I'll make a post in a few hours about Charge, and talk about the 'extension' of my framework I'm itching to create!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8919407573884108637?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8919407573884108637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/terriblyt-sorry-for-lack-of-posts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8919407573884108637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8919407573884108637'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/04/terriblyt-sorry-for-lack-of-posts.html' title='Terribly Sorry for Lack of Posts'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1057734395604825860</id><published>2010-01-07T18:24:00.000-08:00</published><updated>2010-01-07T18:26:59.437-08:00</updated><title type='text'>The Framework is Most Definitely Done</title><content type='html'>Well I finally wrapped it all up in a namespace, and have decided to call it 'ForceFrame'. I've been keeping up with the tutorials, and I might attempt to make another today.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today's my birthday though... so we'll see how that goes...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well just wanted to make a small update... later...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1057734395604825860?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1057734395604825860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2010/01/framework-is-most-definitely-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1057734395604825860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1057734395604825860'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2010/01/framework-is-most-definitely-done.html' title='The Framework is Most Definitely Done'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5356822193242777120</id><published>2009-12-30T00:52:00.000-08:00</published><updated>2009-12-30T00:55:22.645-08:00</updated><title type='text'>Framework == Done????</title><content type='html'>Yep... it is DONE. I just got done going through and making sure many things get output to a file, especially if there is an error. I've talked about making a GUI portion, and perhaps a bitmap font engine, but for the time being, I just want to be done with the whole thing. I've been getting behind on my homework lately, so I want to put in a big effort on that, and get all caught up on it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So hopefully I'll start on some type of game, and perhaps finish it, before I go back to school.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's the small update, later...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5356822193242777120?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5356822193242777120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/framework-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5356822193242777120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5356822193242777120'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/framework-done.html' title='Framework == Done????'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-3872661539901100658</id><published>2009-12-28T00:50:00.000-08:00</published><updated>2009-12-28T00:59:13.829-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Audio Manager'/><title type='text'>Audio Manager = done!</title><content type='html'>Well after a few days, it's finally done. Sorry it took so long, I've been pretty lazy.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically here's how it works: There's two abstractions CMusic and CSound (Mix_Music and Mix_Chunk).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sound holds a channel, and volume, and music just holds volume (other than the actual piece of audio, that is).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can call methods from them, which in-turn, call methods from the AudioManager. The AudioManager acts as a 'messenger' between SDL_mixer and the two abstractions. It performs checks on the various data of the abstractions, and then calls the appropriate SDL_mixer method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It works great as of now, but I may add more later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now there's one last thing I will definitely get finished, and that is the Debug 'Manager'. I just want it to have functions to print to file and the screen. It will have it's own CText object to use TTF to print to screen. I also want to create some way to bound text to a rectangle, so that I can specify a specific rectangle, and the text will automatically be formatted to fit in the rectangle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after that, I'll definitely be having a code cleanup, and I'll implement Debugging code in many places (I have it set up already, I just gotta add the method call).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, I will decide to make a bitmap font engine and/or a GUI portion. At the moment, I'm really hesitant for the bitmap font engine, but slightly enthusiastic about the GUI 'module'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well I'm going to stop talking now, and hit the sack... Night Guys...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-3872661539901100658?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/3872661539901100658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/audio-manager-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3872661539901100658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3872661539901100658'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/audio-manager-done.html' title='Audio Manager = done!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6180645132232214147</id><published>2009-12-23T23:19:00.000-08:00</published><updated>2009-12-23T23:24:37.082-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='QUICK End to Secret Project'/><title type='text'>Secret Project Already Gone With The Wind =(</title><content type='html'>So the 'secret project' was a bot for the game Conquer Online. My friend had it working, and a lot of it worked quite well. I guess they released something that shut it down though, and my friend doesn't want to continue with it. More time for me I guess.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was gone most of the day, so I didn't get anything done, but I'm starting to debate on whether I should actually make a bmp font engine, I might skip it for now, and make the audio manager, and then come back and make it, who knows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I already got a small start on a 'GUI' portion to the framework, but I'm not planning on finishing that until after I finish and sync up everything else.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next two days are going to be quite hectic for me, so I don't know if I'll be doing anything. I want to get a good start on the homework I have though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's all for now, Peace, and Merry Christmas !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6180645132232214147?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6180645132232214147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/secret-project-already-gone-with-wind.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6180645132232214147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6180645132232214147'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/secret-project-already-gone-with-wind.html' title='Secret Project Already Gone With The Wind =('/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-885225036304746454</id><published>2009-12-21T17:55:00.001-08:00</published><updated>2009-12-21T17:59:17.685-08:00</updated><title type='text'>New Video Series?</title><content type='html'>Well I actually did get started making those SDL Tutorials. I've made two of them, but one of the two is split into two parts. Today, there was a lot of people bugging me to do different things, and I didn't get any work done on the Framework. I'm leaving soon, so I don't feel comfortable with starting to work on it now. The rest of the week, I'll be pretty busy, so I'm not sure how much work I'll get done, but here's my plan:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By the end of this week, have the audio manager done, with chunk and music abstractions&lt;/div&gt;&lt;div&gt;By Thursday/Friday of NEXT week, have all my text stuff implemented&lt;/div&gt;&lt;div&gt;Then use that last weekend to implement some debugging stuff and tie up loose ends, and make sure everything works fine together.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*The Game of Life (Estimated Time = 4 Days)&lt;/div&gt;&lt;div&gt;*Entropy(Estimated Time = 3 Days)&lt;/div&gt;&lt;div&gt;*Breakout(Estimated Time = 10 Days)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I'm not really sure what I'll do...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-885225036304746454?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/885225036304746454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-video-series.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/885225036304746454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/885225036304746454'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-video-series.html' title='New Video Series?'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-777977984368600175</id><published>2009-12-20T22:54:00.000-08:00</published><updated>2009-12-20T23:19:09.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>New Video</title><content type='html'>Well I finished kind of cleaning up my code, and made a 10 minute long video... with my own audio commentary =D.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well I just wanted to announce that. I'm going to change one quick thing in the framework before I go to bed, and tomorrow I'll get started on the Audio Manager.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the video, I think I said that I may do some SDL tutorials... So I'll see how I feel about that tomorrow, and maybe start making them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a link: &lt;a href="http://www.youtube.com/watch?v=KI88DwIvrew"&gt;Link&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-777977984368600175?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/777977984368600175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/777977984368600175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/777977984368600175'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-video.html' title='New Video'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-195880058323678305</id><published>2009-12-19T17:02:00.000-08:00</published><updated>2009-12-19T17:17:12.307-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Future Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL_Framework'/><title type='text'>2 Updates in One Day???</title><content type='html'>Yeah that's right!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well I fixed the image loading stuff.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the problem was that I was getting an Access Violation error... That's what kind of happens when you forget to initialize an object! I overlooked it so easily, because it was late at night when it happened, and I thought I just declared the object, didn't think I declared a pointer to the object.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, after I fixed that, the program would execute, but the image wouldn't show up. 5 minutes of a quick debug set up later and I find that the Video Mode wasn't set, which didn't make sense to me at that exact moment, considering the video was made. Then I found I accidentally commented out my initializing method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After uncommenting that, it ran fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So next things to do, which I hope to finish tonight:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Add Direct Pixel Manipulation of Surfaces&lt;/div&gt;&lt;div&gt;*Add Method(s) to select an icon for the window&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomorrow is going to be a clean up day for my code. I'm going to throw everything into a namespace, and then go through and fix up some places in my code. There's places where things seem done, but they aren't really done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically it's just things where I might have:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;bool OnInit(), and then when I call it, I don't do anything if it returns false.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll also be going through and commenting a lot of the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So Monday, I will start working on the Audio Manager, and hopefully get that done within 2-3 days. Then I'll spend some time 'studying' SDL_TTF and perhaps making my own bitmap font engine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I'll throw together a DebugManager, which will utilize the 'font manager' (not really sure about how I'm going to handle it yet....). Then it will be all done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, the only changes I'll be making are optimizations. When it's done, I'm jumping right back into developing games. Starting with the Game of Life and Entropy, then I'm thinking about making a Tetris game, and a Breakout game, although, I think I might skip Tetris and go straight to Breakout. After that, I'm thinking of making a platformer =p.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's all for now... I should (hopefully) have an update tomorrow. But if I do, I'll make sure it's after I do some cleanup.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So expect a video some time in the coming week showing off the current functionality of the framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-195880058323678305?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/195880058323678305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/2-updates-in-one-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/195880058323678305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/195880058323678305'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/2-updates-in-one-day.html' title='2 Updates in One Day???'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8253635925776527704</id><published>2009-12-19T12:02:00.000-08:00</published><updated>2009-12-19T12:20:01.489-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Access Violation'/><title type='text'>New Update (Finals are OVER!)</title><content type='html'>Well Finals are over =D. I got As on all my finals, and have a 4.3 GPA for the semester, so I'm in good shape. Anyways, back to the actual development stuff.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I made myself a check list of things I want done before I make a video. I've started on it, and have already completed half of it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now, the current issue at hand, is my surface abstraction. I made an example real quick to test image loading/clipping. Everything compiles and links just fine, but when I execute it, I get an Access Violation error whenever it comes to the abstracted surface in the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I have a LoadImage method in my abstracted surface class:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;void LoadImage(std::string filename)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(m_pSurface != NULL)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;delete m_pSurface;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;m_pSurface = NULL;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;SDL_Surface* loadedImage;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;SDL_Surface* optimizedImage;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//I don't feel like typing the rest, but basically&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//I load the image into loaded image, and if it isn't NULL, then I format the image,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//Then I assign the value of optimizedImage (which is now loaded and formatted)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//To m_pSurface(which is the abstracted surface).&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, right here: if(m_pSurface != NULL), is where it happens... I take that out, and it has an access violation the next time I mention m_pSurface.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll find the problem today hopefully. But after that, my checklist is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Extend functionality of surface abstraction to allow direct pixel manipulation&lt;/div&gt;&lt;div&gt;*Add support to select an icon for the window&lt;/div&gt;&lt;div&gt;*Place everything in a namespace&lt;/div&gt;&lt;div&gt;*Clean up and comments&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;so after I do everything, I'm going to go through, and organize things a bit better, and get things ready. I also haven't been consistent with comments, so I'm going to comment it as I'm reorganizing things.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But as it is now, to make anything, all I will have to do is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create a derived class from CApplicationManager (or use the basic one I made, which will just be used for simple demos) and then make my own set of states.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now, I'll make another post if I get anything done&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8253635925776527704?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8253635925776527704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-update-finals-are-over.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8253635925776527704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8253635925776527704'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/new-update-finals-are-over.html' title='New Update (Finals are OVER!)'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-517108514292611408</id><published>2009-12-16T21:17:00.001-08:00</published><updated>2009-12-16T21:24:49.729-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Framework Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Daily Update'/><title type='text'>Update for the Day</title><content type='html'>Well today I didn't get a lot done in terms of productivity, but I did test some features with small little demos.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also added some important methods to the Window Manager class to update the screen, fill the screen with a certain color, and fill a rect.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The demos were just simple things to make sure the new methods worked, and to make sure window managing worked.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also encountered a fail of the day in one of them...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wrote up a quick demo using the framework that created a block where the mouse cursor was, and moved where ever the mouse moved (so it acted as a secondary cursor I suppose...). Anyways, when I first ran it, it was just a blank blue screen (I cleared the screen blue), and I kept wondering what the problem was. After about 20 minutes of searching through my event handling code... I found that I had set the block's color to blue, same as the background color.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, I checked to make sure all my event handling stuff works:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Key Presses&lt;/div&gt;&lt;div&gt;*Key Releases&lt;/div&gt;&lt;div&gt;*Mouse Presses&lt;/div&gt;&lt;div&gt;*Mouse Releases&lt;/div&gt;&lt;div&gt;*Mouse Movement&lt;/div&gt;&lt;div&gt;*Focus Loss&lt;/div&gt;&lt;div&gt;*Window Resizing (Including Fullscreen support)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It seems like I'm missing some, but that's just off the top of my head...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But with that, I bid you ado.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-517108514292611408?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/517108514292611408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/update-for-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/517108514292611408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/517108514292611408'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/update-for-day.html' title='Update for the Day'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5091862193190521455</id><published>2009-12-15T18:22:00.000-08:00</published><updated>2009-12-15T18:29:08.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Developement'/><title type='text'>Real Quick Update</title><content type='html'>Just wanted to say that I finally took care of all those errors, and the project now compiles fine, with just a single warning (just a little tidbit about losing data, because I convert from a double to an int) =D. Anyways, the event handling works well.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomorrow I have finals the next three days, so I probably won't work too much on the framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I need to do, is study the structure of both SDL_mixer and SDL_ttf, because those are the last two things I want to implement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After I do that, I'm going to make a much better Debug class, so that you can debug to the screen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So just off the top of my head for the text stuff, I want to be able to do the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Specify a Rectangle that text keeps itself in (not sure how possible this is... I'm sure there must be a way though)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Select font, color, and string of text&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Find some way to manage fonts (Maybe not though...)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's just a few things that I want... Simplistic, but it's just off the top of my head. I'll be taking a lot of notes on SDL_mixer and SDL_ttf from Focus On SDL, LazyFoo's tutorials, and their respective documents.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's the update. I definitely should finish this over this break that's coming up =D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5091862193190521455?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5091862193190521455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/real-quick-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5091862193190521455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5091862193190521455'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/real-quick-update.html' title='Real Quick Update'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4672527241175276445</id><published>2009-12-15T06:46:00.001-08:00</published><updated>2009-12-15T06:51:22.606-08:00</updated><title type='text'>446 Errors 0.o???</title><content type='html'>Will after I completed my Event Manager class, and a state machine, I attempted to compile the project, to make sure everything worked right. Well, I come to find out, that there are 446 errors and 30 warnings in the project, I think that's a new record of some sort =D!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, I've been slowly, but surely, cranking away at the errors and have now reduced it to 20 errors. Problem is, the 20 errors are all from the same thing, and quite frankly, I haven't figured out the problem. my Application Manager doesn't know that my Event Manager exists, and vice versa. Every other class can use both of these fine and vice versa. I've included the header file declaring the class, and checked to make sure the class ended with a semicolon. So I'm going to have to walk through the structure of the Window Manager and the Event Manager and the Application Manager to see how the Window Manager differs....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll try to work on that today, but for now, I must leave, school calls =/.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4672527241175276445?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4672527241175276445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/446-errors-0o.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4672527241175276445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4672527241175276445'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/446-errors-0o.html' title='446 Errors 0.o???'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5160326863982497428</id><published>2009-12-13T00:42:00.000-08:00</published><updated>2009-12-13T01:01:02.055-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Framework Development'/><title type='text'>Attempting to Keep Updates...</title><content type='html'>So I finished my event handling scheme. Works just how I like it. Towards the end, I decided to screw Joystick/Controller support, so I have the methods commented out, so I can easily finish adding support later, should I so choose.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking at my framework, there was something that bothered me. To initialize subsystems of the framework, you call an 'OnInit' function, that takes in a number of flags, for each piece you want to initialize. I'm not really enjoying this, and I'm really considering pulling that out, and adding an init function for each subsystem within the app manager. This way, I can have more control over how each piece is created.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The thing I'm disliking more and more though. Is having to use the AppMgr to access anything else. But thinking about that... That's the whole point of the AppMgr, to have a unified 'front' to access everything. I'm just lazy and don't want to type alot... so #define will be a good friend =p.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#define WndwMgr CApplicationManager::Instance()-&gt;GetWindowManager()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The joys of #defines...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways... So now that I'm done talking about what I'm doing next, let's talk a little bit about what I just did.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So basically, there were 3 new classes I wrote: Base Game State, Game State Machine, and Event Handler. The Event Handler polls for events, and every time there is an event, the event is dispatched to the AppMgr which determines whether it is an event that the Window Manager or state machine needs, and then dispatches it to the correct manager. The Window manager has functions to handle each type of event, such as resizes and focus loss.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The State Machine utilizes the Base Game State ( duh!). The Base Game State class has virtual functions for mouse/keyboard events. If your Game State will use it, then override the virtual function, if not, no harm done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, that's pretty much the Event Manager...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after I do some clean up to make sure everything works together so far, I'm going to finish planning out the Audio Manager, which will be the last piece (Besides Threading, Networking, and OpenGL support, but I'm not planning on adding any of those until I get my new computer).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I planned out the Audio Manager once before, but I'll have to modify it a little bit due to recent changes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now that I've said the Audio Manager is the last thing, I've realized I don't have text support yet =0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm still contemplating on whether I want a full out text system (ttf/bitmap font support, specialized surface abstraction, and functions made specifically for it)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;or just extend support on the abstracted surface I already have...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Either way, I should finish this framework over the break... and hopefully those two games.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, finals are almost here, if I get an 86 on my history final, I'll have a 4.3 GPA, yay... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Depending on how I feel over the break, I'm thinking about releasing some SDL video tutorials... The only SDL Video tutorial I know of is from some guy with a strange accent (no offense) snasebrase on Youtube, I believe...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways I'm done rambling, it's time for bed, happy devving.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5160326863982497428?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5160326863982497428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/attempting-to-keep-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5160326863982497428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5160326863982497428'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/attempting-to-keep-updates.html' title='Attempting to Keep Updates...'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4468542872396520949</id><published>2009-12-11T20:38:00.000-08:00</published><updated>2009-12-11T21:17:47.735-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>What's Up with the Inconsistent Updates 0.o???</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Well I apologize for the lack of updates. School work tends to take over my life, whether I choose to do it or not 0.o. But anyways, I think my last post should be completely disregarded... As I started using that 'template' I found it was real dirty, and had a lot of bugs =/. So I've been working on a new framework... One that is so much better. As I'm typing this, it seems I've said this a lot, but I'm making sure everything works and everything is clean as I go along. I've spent a lot of time planning it out, and studying various methods to get things to work. But anyways, I guess I'll share a little bit to how it works/will work.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So far I have written 3 classes to abstract SDL_Surfaces, SDL_Colors, and SDL_Rects. I have also written a point class, Timer Class, and derived a class from the Timer Class to act as a timer specifically to manage the frame rate of the game. Aside from those 6 classes, I have 3 other classes that are 'managers'.  I have set up a hierarchy in which the Application Manager holds everything, and everything is accessed through it. So far I have the Application Manager, a Window Manager, and a 'Debug' Manager (Exists only in Debug Build). As of now the Debug manager is very simplistic, and isn't my main focus. But anyways back to how this all works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Application Manager is a singleton, and abstracts the game loop, so in my main function, all I need is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;int main(int argc, char* argv[])&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;AppMgr-&gt;OnInit();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return AppMgr-&gt;OnLoop();&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This greatly simplifies what goes in the main function. But the Window Function has 5 pieces of data: Screen Width, Screen Height, Screen Bits Per Pixel, the Title of the Window, and an SDL_Surface* which is the screen itself. The Window Manager has a constructor to initialize everything, Rendering functions - I have a few overloaded versions of it, so you can specify a lot, or very little, and an 'OnEvent' function. I don't have Events coded in well yet, but that is my task for tonight. I have grouped all the event types into two categories: Input or Window.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the Event Manager will have an SDL_Event, and will check for an event, on an input event, the event manager will dispatch it, along with information specific to that type of event, to the current state of the Application Manager (which also need to be coded...). If it's an event that affects the window (SDL_ACTIVEEVENT, SDL_VIDEORESIZE, or SDL_VIDEOEXPOSE), I will dispatch the event information to the window to handle accordingly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is where my last framework failed, and why I need something as the Application Manager to hold everything.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using SDL_PollEvent() pushes the event out of the queue, and stuffs your event structure with the information regarding that event. My problem, was that I would do:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;while(SDL_PollEvent(&amp;amp;event))&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(event.type == SDL_QUIT)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;SetState(Quit);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was a horrible way to handle it, because I had this going on in a global state, yet any event handling was done in the current state (I derived my state manager class from Programming Game AI by Example. Has a Global State, Current State, and Previous State). So anything that was controlled via events, wouldn't function.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Through this, I have one thing controlling everything and taking care of it. Then in the current state, it will pass the event information to any entity that may need it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Each manager contained within the AppMgr, also has a pointer (named parent) back to it's application. The idea is that none of the minor managers should exist without the parent AppMgr. As of now I don't have anything to restrict creating any of those objects,  but I'm not sure how necessary it is as of right now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But anyways, here's what I have left: Game States, Game State Machine, SDL_mixer functionality (unless this is already OO, which I hear it is), then add some stuff to my Surface abstraction for text loading via SDL_TTF and perhaps a bitmap font engine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this, I want to make 2 games to 'test' the functionality of this framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first one is John Conway's The Game of Life. The idea looks quite simple, so I think it'd be a great thing to wrap up quickly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other one has no name, it was just something I sort of thought of. I don't want to waste time explaining it right now, because it isn't very important.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's what is going on at the moment, but for any of you that are interested, here's what's happened in between my last post and this one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I started to work on my new framework, I found two people that wanted to attempt a group project, so I said I'd join in. We decided to use SDL, with OpenGL rendering. I come to find out that my crappy integrated chipset graphics (boo hoo =( ), apparantly doesn't support OpenGL, so every OpenGL app I attempt to run will crash =/.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, I have been saving up for a new computer, but it's going quite slowly, but Christmas, and my birthday are right around the corner, and I'm estimating the computer will cost about $600 including OS. I'm building the computer so I can get a better price. Going with Quad Core AMD, and a mediocre ATI GPU, and Windows 7. So I'm guessing around February/March, I'll have a new computer and can extend the framework to work with OpenGL, and then, if the other guys still want to, we can work on a group project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, I say this is good, considering none of us are too 'fluent' in OpenGL, and one of the guys needs to learn C++, SDL, and OpenGL... He knows C, and has been programming with PAlib for a long time, so it may take him a while to get familiar with this stuff, but I'm quite sure he has talent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways that's all that has really been happening. Finals next week, so I've been studying a lot, trying to cram as much information as I can. I have 5 /6 of my finals will be really easy for me: Chemistry, Math Analysis, Spanish 3, English, and Music History... my US history class is the only Final I'm worried about. I have a habit of not remembering anything important when it comes to history.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But after Finals, I have (2 weeks?) off, and I hope to get a lot done during that time. One goal I'm hoping to accomplish is to grab a headset and make a video or two. I'm hoping I can finish the framework and the two games I want to make within that time, so I can make a video on it, and put some commentary in it... I don't know about you, but I'm much more intrigued into Videos relating to Game Development when I can hear the person's voice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's the end of this long post... I gotta get to coding that Event Manager!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4468542872396520949?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4468542872396520949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/whats-up-with-inconsistent-updates-0o.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4468542872396520949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4468542872396520949'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/12/whats-up-with-inconsistent-updates-0o.html' title='What&apos;s Up with the Inconsistent Updates 0.o???'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1330866928030987915</id><published>2009-11-02T06:39:00.000-08:00</published><updated>2009-11-02T06:54:05.825-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><category scheme='http://www.blogger.com/atom/ns#' term='SegFault'/><category scheme='http://www.blogger.com/atom/ns#' term='Recode'/><title type='text'>Been a While Since I've Had a Post...</title><content type='html'>Well, thought I'd just write up a quick post, since I haven't had a post in a while. So Charge is still in no working condition, sadly, but I am finding more time to work on it. I've made a software engineering club at school, so I'm helping out a lot of new programmers work with C++, although we might be 'converting' to C#, since their ambitions seem to be within XBox games.&lt;br /&gt;&lt;br /&gt;So I have been dabbling around in C#, and I have to admit, it's a great language. So far I've only made simple console apps, but I've made some pretty cool stuff. I created a simple local server/client chat app... Can't really be used to chat with others, just with the computer. But the cool thing about it, is that it converts the strings you type in, into packets (byte arrays) and then encrypts the packet, and decrypts it when it gets to the other side. So it's a little interesting =p.&lt;br /&gt;&lt;br /&gt;So let's get back to the actual game development going on. I'm getting cleaner code =D. I updated the SDL_Template I made some time ago, so now it has a GameHandler class which holds the game's statemachine. I've also made a base state class, and have made all states singletons. The State Machine holds 3 states: Current, Previous, and Global. This way I can revert back to the previous state at any time. It will also help with in-game menus, so that I can make the actual game the previous state, and the menu as the current state. I also created an ImageHandler class, which has all my methods for loading/applying images, and also counts how many images are loaded and puts it into a Debug file.&lt;br /&gt;&lt;br /&gt;Going on from the Debug file, I have finally set up two different binaries. I have Debug and Release, but now they aren't exactly the same. I have a function called Debug, which takes in a char array, and outputs it to a Debug.txt file. But it's only created if the binary is in Debug mode. This way I can make Debug specific code, so when there's problems, I won't have to put in code to take out later =D.&lt;br /&gt;&lt;br /&gt;So as of now, Charge has a nasty segfault, and I think I've found the problem, but worst comes to worst and I will have another recode, but this recode shouldn't take longer than 5 days. The only thing Charge has, at the moment, that my SDL_Template does not have, is: Telegram struct, Message Dispatcher, Entity Manager, Base Game Entity, Derived Classes from Base Game Entity (Game Entity, NPC, PlayerControlled), and the Ship class. So by the end of this recode, Charge should be up and running, and I should be able to take off running with it. The way I've redesigned it, makes it incredibly easy and flexible to program AI, thanks to Programming AI by Example anyways. A lot of the new stuff I'm using is my own revised version of some stuff from that book. I don't find much time to read, so haven't read much from Code Complete, but I'm really stoked to read both that, and finish up Programming Game AI by Example.&lt;br /&gt;&lt;br /&gt;Well that was my post to prove I'm not dead, so hopefully I'll make another post later =D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1330866928030987915?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1330866928030987915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/11/been-while-since-ive-had-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1330866928030987915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1330866928030987915'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/11/been-while-since-ive-had-post.html' title='Been a While Since I&apos;ve Had a Post...'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-4540856498055419429</id><published>2009-09-06T14:28:00.000-07:00</published><updated>2009-09-06T14:34:30.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Charge On Hiatus'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Design'/><title type='text'>Emphasis on Design =(</title><content type='html'>Well, I added in the last two enemies. Problem is, I can't do what I want to do with their AI strictly because of design. I've tried to make little ways around it, but I'll have to recode from the ground up to add in what I need. So for now Charge is on Hiatus, for the time being, I'll be reading Code Complete 2nd Ed, and Programming Game AI by Example. Hopefully I'll get some Charge REDESIGN done. I'm hoping to just do alot of design in my freetime, start making some UML flow charts and stuff so then everything is easy to translate to code.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The biggest thing I'm finding I need to implement, though, is a 'message' handler. This way, I can have the message handler be a singleton, and have it dispatch messages to each object. Each object would contain an ID, so the sender and reciever can be known. This way, when a bullet is coming to hit a mothership, the mothership can send a message to the protectors, and then they can take a bullet for the mothership.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'm finding a lot of useful things from this book, so I reccommend you check it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's my short post for now, hopefully I'll find time to get something done.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-4540856498055419429?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/4540856498055419429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/09/emphasis-on-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4540856498055419429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/4540856498055419429'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/09/emphasis-on-design.html' title='Emphasis on Design =('/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-7124374994758782111</id><published>2009-08-28T06:26:00.000-07:00</published><updated>2009-08-28T06:27:50.400-07:00</updated><title type='text'>A Big Low =(</title><content type='html'>Well school has started back up, and it would appear as I have little to no free time. Any free time I can get, I'll put into Charge development, though. So hopefully during Winter Break, I can get it all finished and polished up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I won't be making many, if any posts, during the school year, unfortunately =(.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-7124374994758782111?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/7124374994758782111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/big-low.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7124374994758782111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7124374994758782111'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/big-low.html' title='A Big Low =('/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-2141765908678142445</id><published>2009-08-22T22:12:00.000-07:00</published><updated>2009-08-22T22:24:06.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Yay! Back to it's Former... (Opposite of Glory 0.o?)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HTpoVIxYKtw/SpDSXrPoIAI/AAAAAAAAACc/WphoEILwTgE/s1600-h/Charge-SS10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_HTpoVIxYKtw/SpDSXrPoIAI/AAAAAAAAACc/WphoEILwTgE/s320/Charge-SS10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5373025659640094722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Well I just got back from camping today. It felt good to get out and get some of the good ol' outdoors. I caught like 8 fish, so I'm happy =p.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, let's get back to development. I worked a little bit today, and took maybe half an hour to code in the Drone and Revenant. The glitch is completely gone, and with how easy it is to code in enemies, I'll consider making another type of enemy or two, perhaps. The next thing I have on my list is the Enemy Machines, so I don't know how long those will take.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I need to do for them is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Create a (global? static?) timer for them to share.&lt;/li&gt;&lt;li&gt;Create an integer that will change based on the level (will get smaller and smaller) which will be when the timer goes off.&lt;/li&gt;&lt;li&gt;Create a system so that the enemy is created at the machine, and then goes into some row and into the field of play.&lt;/li&gt;&lt;li&gt;Maybe have a 'life' element to them so they can't be so easily destroyed&lt;/li&gt;&lt;li&gt;Make them be able to shoot every 2nd tiem increment(time increment is the integer I talked about) and the bullet will be shot towards the player.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So it isn't a very big list, but some of the stuff may get complicated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after I get that done, I just need to add in the protector, then I have a whole lot of effects I want to code in. After all that gets done, I'll consider adding in different types of enemies (maybe a Boss of some sort?). Well that's really all I have to say, I made a little video, but I'm gonna let my friend edit it, so he can get some practice using Sony Vegas, so the vid may look a bit nicer, or not, but hopefully he'll get better and can edit all my videos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So when he finishes editing that, I'll post it, and let you all know.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for me, good luck on any of your own projects.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-2141765908678142445?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/2141765908678142445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/yay-back-to-its-former-opposite-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2141765908678142445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/2141765908678142445'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/yay-back-to-its-former-opposite-of.html' title='Yay! Back to it&apos;s Former... (Opposite of Glory 0.o?)'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HTpoVIxYKtw/SpDSXrPoIAI/AAAAAAAAACc/WphoEILwTgE/s72-c/Charge-SS10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5901922217731118523</id><published>2009-08-18T22:30:00.000-07:00</published><updated>2009-08-18T22:47:01.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>A Whole Week and No New Posts ???</title><content type='html'>Well I promise I didn't die =D. Anyways, I've been doing a lot. But I finally got something done, it probably seems small to everyone else, but it's a huge accomplishment for me. I fixed the glitch that haunted me for so long. But now I've actually taken a huge step backward... I recoded the entire game. But the code is now much better. As I was looking at an earlier back up I had, the code was the result of big design flaws. So I got a much better design now, and I'm ready to really start cranking it out on this project.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now that the little intro is done... Here's what I've been doing...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well I decided I was going to start delving into a GUI library, I chose wxWidgets and as soon as I got it all set up, I decided that a level editor wasn't that important to me yet. So I looked through some of my books, and found a nice book on AI, so I've been reading that. It has great examples!&lt;/div&gt;&lt;div&gt;It's called Programming Game AI by Example, and I really recommend it =D. So instead of learning a GUI lib, I've been reading up on AI. I've also read a little from Code Complete, so I hope to finish these two books, and more, so I can gain some more knowledge =D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, after about 3-4 days of not even looking at the Charge source code, I jumped into it and started code crunching. It seemed all my attempts were futile, so I looked at all my 'design docs' (I use that term VERY loosely) and found I should just recode it. So 3 days after that, I'm here, and I've fixed the bug. The bug was still there 15 minutes ago, but it was a little different, but I was able to fix this one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the things that are not in that were in my last build are:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Drone&lt;/li&gt;&lt;li&gt;Revenant&lt;/li&gt;&lt;li&gt;Particle Engine&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So it's not really that much. I've decided to throw the particle engine into the whole effects stuff, which I plan to do last.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now I wanna focus on the AI. So I plan for the Grunt to be extremely stupid, but it'll be so stupid that it will be like half dangerous. The Drone will be a bit smarter, and the Revenant will have the best AI. From there there will be A-Machines and Protectors. A-Machines will create new enemies every time interval, which is determined by the level you are on. At first it may be 10 seconds per enemy per machine, and it may get to the point where it's less than a second. The protectors are the other type of enemy, they just take bullets for the machines, pretty much, and will sometimes shoot, but that will be an effect thing for later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after I get all that AI stuff done, and get the game to a playable state, I'm going to start building up some effects like power ups, particle engine, different bullet types, status bar, (maybe a Boss???), and whatever else I can think of.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, I'll try my best to find a graphicist, and sound artist, otherwise it'll be public domain or my crappy graphics.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's all for now, I probably forgot to mention in there, there will be some down time til the next post. I'm going camping tomorrow, and summer is coming to a close. I'll try to get the Drone + Revenant coded before school starts, but once school starts, I don't know how hectic it will be or how much free time I'll have. I'll make posts whenever I can, and have something relevant to post about.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5901922217731118523?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5901922217731118523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/whole-week-and-no-new-posts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5901922217731118523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5901922217731118523'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/whole-week-and-no-new-posts.html' title='A Whole Week and No New Posts ???'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-1579962039216792962</id><published>2009-08-11T20:40:00.001-07:00</published><updated>2009-08-11T20:50:06.198-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Charge On Hiatus'/><category scheme='http://www.blogger.com/atom/ns#' term='Updates'/><title type='text'>Update for the Sake of Not Updating?</title><content type='html'>Well, I've been going mad over this bug, I've even rewrote every relevant piece of code, and it just doesn't look like it's going to get fixed. I've decided to take a short break from that, and explore some other things. So I started today and I looked at LazyFoo's tutorials for Creating a Level Editor and Tile Engines. I made my own little demo, and it's pretty sweet =p.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;It works just like LazyFoo's but I changed a few things here and there (Didn't Copy + Paste, Mind You). I changed how it checks for a click, by using the state, and not checking only when there's an event, so that you don't have to have a new click. You just click and drag every where. There's also some other stuff I changed, but I can't exactly remember, I'm quite tired right now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the level editor exits, everything is saved and then the generated map file can be put into the demo that displays the map and let's you move around. I spent well over an hour creating some complex map with it, and then found the sprite moved much too slow, so I had to crank up the speed =p.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways that's what I got done today. I'm thinking of changing the scrolling in it and having it display the different tiles in a bar that can be dragged around to put it somewhere out of your way. Then you could click to select the tile you want to use. (Thanks to retrothomas for the idea)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways I'm thinking of learning some kind of GUI library, so I can make a nice looking and complex level editor that I can use in future projects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have ideas for 2 games I want to make, and I'm thinking I want to make them 8-bit, so I can first of all play around with SDL's Palette system and then I can also make them the awesomeness that 8-bit is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So right now I'm gonna play around with the simple level editor and make some adjustments with it, etc. Once I'm familiar with the method, I'll start looking into a GUI Library, so if you know of any good ones, comment below =p (Not that anyone even reads my blog xD).&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-1579962039216792962?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/1579962039216792962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/update-for-sake-of-not-updating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1579962039216792962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/1579962039216792962'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/update-for-sake-of-not-updating.html' title='Update for the Sake of Not Updating?'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-7743278122796735785</id><published>2009-08-05T21:28:00.000-07:00</published><updated>2009-08-05T21:32:54.012-07:00</updated><title type='text'>A New Day Brings a New Glitch =(</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=GTYOp7uYQHM"&gt;Video Link!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well today I spent all of my coding time trying to figure out this nasty bug/glitch. Nothing seems to click with it, I've tested it hundreds of times, I've gone through relevant and irrelevant pieces of code and I just can't seem to find it. Well I'm done for today but maybe someone else can help out while I sleep =D.&lt;br /&gt;&lt;br /&gt;So I posted a video which you can see above that show's the glitch, and I've posted all the relevant code in here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://palib.pastebin.com/m5314b872"&gt;http://palib.pastebin.com/m5314b872&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So if you find anything that may help, contact me at xianforce@gmail.com please =/.&lt;br /&gt;&lt;br /&gt;Thanks for any support =D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-7743278122796735785?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/7743278122796735785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/new-day-brings-new-glitch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7743278122796735785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/7743278122796735785'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/new-day-brings-new-glitch.html' title='A New Day Brings a New Glitch =('/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6996194341041264294</id><published>2009-08-04T18:29:00.000-07:00</published><updated>2009-08-04T18:40:34.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 9 of Charge Development</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HTpoVIxYKtw/SnjhHZN-zGI/AAAAAAAAAB0/M1OinTrMTGw/s1600-h/Charge-SS9.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://2.bp.blogspot.com/_HTpoVIxYKtw/SnjhHZN-zGI/AAAAAAAAAB0/M1OinTrMTGw/s320/Charge-SS9.png" alt="" id="BLOGGER_PHOTO_ID_5366286473156807778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well I lied in my last post =p. I said that I was going to work on a different type of bullet next, but as I thought about it, all my bullet ideas really revolve around effects, I think effects should be one of the last things, so I decided to finish all the enemies and get the game play working correctly, then go through and add in all the effects I want and create more levels.&lt;br /&gt;&lt;br /&gt;So now I've gotten the next enemy: Revenant.&lt;br /&gt;&lt;br /&gt;As of now, Revenants are represented by purple triangles, and in this little test there are a total of 5 enemies: 1 Grunt, 2 Drones, and 2 Revenants.&lt;br /&gt;&lt;br /&gt;The Revenants are meant to have the best/most complete AI. I think how I have set them is good for a first level, but I'm planning on giving speed increases, and maybe some 'team AI' in later levels.&lt;br /&gt;&lt;br /&gt;Another thing that got done was collision changes. As I was thinking about different bullet types I wanted to implement, it became quickly apparent that circular collisions weren't going to cut it. I needed different widths and heights in some scenarios so I've reverted back to bounding box collisions.&lt;br /&gt;&lt;br /&gt;Neither of these things caused any problems at all, the only errors I got were from simple things like forgetting a semi-colon, or forgetting to include a header.&lt;br /&gt;&lt;br /&gt;Well that's all that's been done today, I'm still making out some plans for how I'm going to implement Protectors. I'm thinking I'm going to have to implement Protectors and Motherships at the same time to see if they work correctly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But I've also thought up of a better (in my opinion) game play. Instead of having Mother Ships, I could make some machine. This machine would have a timer on it and would create new ships every so often. As the levels progress, more and more machines are there. Whatever enemy comes out would be either completely random or maybe some kind of order. Protectors would do whatever they could to protect the machines. Like if a player shot a bullet and it was headed towards the machine, the protector would take the bullet.&lt;br /&gt;&lt;br /&gt;Well those are my ideas for now, I'm leaning towards the second, because I think it would provide more interesting game play, and that way levels could either be really quick, or really long.&lt;br /&gt;&lt;br /&gt;Well, hope to make another post tomorrow, ciao!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6996194341041264294?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6996194341041264294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/day-9-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6996194341041264294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6996194341041264294'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/08/day-9-of-charge-development.html' title='Day 9 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HTpoVIxYKtw/SnjhHZN-zGI/AAAAAAAAAB0/M1OinTrMTGw/s72-c/Charge-SS9.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-780887847330777380</id><published>2009-07-31T22:38:00.001-07:00</published><updated>2009-07-31T22:52:00.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 8 of Charge Development</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HTpoVIxYKtw/SnPVJMBM9GI/AAAAAAAAABs/9p1VfCwsuwQ/s1600-h/Charge-SS8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://2.bp.blogspot.com/_HTpoVIxYKtw/SnPVJMBM9GI/AAAAAAAAABs/9p1VfCwsuwQ/s320/Charge-SS8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5364865934950200418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Hey guys =D. Yesterday I didn't work on Charge at all. I was playing around with some stuff in PAlib and made a quick game as a 'joke' to enter a compo. So I got that done, and didn't really care to do any more coding for the day, so I just went to bed at that point.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking at the screenshot I would hope you'd notice that now there are two different colored enemies. I added a new type of enemy! The blue ones I call Grunts, and the green ones are called Drones. Drones execute paths more often, and don't just randomly shoot like the grunts. They wait until they are within a certain range (horizontally). So their AI is slightly improved.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most of the day was spent slightly modifying how AI was executed so that there could be varying levels. I'm a bit less than satisfied with how it is right now. With how I have it at this moment, I will have to recreate the AI for every level. Which is fine considering I can just copy and paste it in. Or I can make later levels have improved AI, so I'm contemplating on whether to keep it where it's at, or move it up the chain so that it can be defined once, and then if needed I can overload it in the base class.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So right now I have 3 more enemies planned: Revenants, Protectors, and Mother Ships.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm thinking the goal of each level will be to take out the Mother Ships, and the Protectors will... well protect =p. Each of these next enemies will not have normal bullets, so the next thing I'm going to work on is another bullet. Revenants will have the best overall AI. They'll have the best timing on shooting, dodging, path exectution and so on. Protectors will just take a bullet if need be, and perhaps shoot on some conditions. Mother Ships will only dodge, but they will be quite good at it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's all I plan/hope for. After I get some more of this content done, I want to start working on some things like explosion animations for when something blows up. I also want to change how the enemies move idly. So they aren't just bouncing back and forth, I want it to feel a bit more like Galaga.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, the problems I had today were all with pointers. I would forget to check if something wasn't NULL, before I did something with it, so a bullet would hit an enemy, or the player and program ends returning a 3.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So really it was just little things here and there that I had forgotten, but for the most part it worked very well, just how I thought.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometime I am going to HAVE TO REDO THE PATHS THOUGH!!! All the paths suck, and I need to make them better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for today, I'm signing off!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-780887847330777380?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/780887847330777380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-8-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/780887847330777380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/780887847330777380'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-8-of-charge-development.html' title='Day 8 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HTpoVIxYKtw/SnPVJMBM9GI/AAAAAAAAABs/9p1VfCwsuwQ/s72-c/Charge-SS8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-3462233557534067482</id><published>2009-07-30T09:05:00.001-07:00</published><updated>2009-07-30T09:20:21.128-07:00</updated><title type='text'>First Video of Charge is Up =D</title><content type='html'>Hey guys, just wanted to let you know that the first video of Charge is up, it shows all I've gotten accomplished so far. Here's a link: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=pBaDJCP7EBA"&gt;Charge Video&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alright, that's it for now, I'm still planning a few things out right now, and trying to decide what I want to do next exactly, but I hope to make another post today/tomorrow.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-3462233557534067482?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/3462233557534067482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/first-video-of-charge-is-up-d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3462233557534067482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/3462233557534067482'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/first-video-of-charge-is-up-d.html' title='First Video of Charge is Up =D'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-269597702994841341</id><published>2009-07-29T16:16:00.001-07:00</published><updated>2009-07-29T16:48:59.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 7 of Charge Development</title><content type='html'>I'm very sorry, I know it's been a few days since I shared an update, but I have gotten quite a lot done.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I actually wiped my computer, so I have very few programs, I'm still working on getting some kind of screen camming software, and video editing software. Once I do I'll throw a video together, and upload it to youtube, for viewing pleasure.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first few days were real unproductive. I kept getting errors when trying to use static surfaces. I finally fixed it after like 3 days. That meant the particle engine was done for my purposes. I haven't made any more implementations of it, but I'm planning to have particles follow some types of bullets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So after that got done, I decided to get working on the next thing: Path System.&lt;/div&gt;&lt;div&gt;As of now, the Path System is done, later I'll make the actual paths themselves better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the trouble I had with the static variables were all over the place.&lt;/div&gt;&lt;div&gt;I got the right implementation after a while, but the problem was I couldn't load the image for the surfaces, because it would result in a segfault. The segfault happened because SDL functions were called before SDL was initialized. After a day of trying different things and getting help from different people, I finally got it working.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's the end of the static variable trouble, now let's see what happened with the Path system...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So with the path system I decided each path was going to be an array of points. I'd pass the array into a function that would follow the path. It did this simply by adjusting velocities according to it's position.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first small problem I came to, was how to find the number of elements in an array. I wanted this function to work on any path, so it needed to be able to find the number of elements in an array. I found using:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;sizeof(array) / sizeof(array type)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;was a way to get the amount of elements in an array. So I implemented this, and found out they weren't following the path at all. That was the last thing I thought it could be, but then I found the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you pass an array into a function, what your really getting is a pointer to the first element of the array... so I just had to dereference the array, right?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wrong.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried that thinking it must work now, and I found it went to the first point in the path, and then stopped.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a pointer to the FIRST element in the array, not the array. so really what I was doing was this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;sizeof(someArrayOfInts[0]) / sizeof(int)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So really, this is going to evaluate to 1 every time, hence why it only accomplishes one point.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought for a second of using a multi dimensional array. When you pass those into a function, you get a pointer to an array, so that could work... except for the fact that anything past the first dimension must be specified.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At that point, I didn't think there would be a way to do it... until after I implemented it with vectors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I started using vectors and instantly got it working just how I wanted it to. I just had to make one small tweak. After it completed the path, I wanted it to return to its starting position. After some thought, I realized I couldn't just add their original points in at the end, because the Paths are for all of them. That's when I decided to have each enemy hold a Path that would determine their current path. They also have an integer that controls their path. So when the integer is -1, they don't have a current path, so no path is followed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After I found this worked perfectly, I just made a function to perform the path logic and it looked a little bit like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;if(rand() == 0)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;        switch(rand() % 3)&lt;/div&gt;&lt;div&gt;       {&lt;/div&gt;&lt;div&gt;               case 0: pathID = PATH_1; change_path(); break;&lt;/div&gt;&lt;div&gt;             //etc&lt;/div&gt;&lt;div&gt;       }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;change_path() just copies the contents of one vector into the enemies own vector of points and then adds in a last point which is it's original coordinates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this worked great. After I finished this I just made some wacky paths and let it rip and it works awesomely great.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's it for now, I'm still contemplating on what to work on next, but you can expect a video soon.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-269597702994841341?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/269597702994841341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-7-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/269597702994841341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/269597702994841341'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-7-of-charge-development.html' title='Day 7 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8803031575366299473</id><published>2009-07-25T23:57:00.000-07:00</published><updated>2009-07-26T00:15:43.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 5 of Charge Development</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HTpoVIxYKtw/SmwCROCa5jI/AAAAAAAAABk/slNvFBrTkL4/s1600-h/Charge-SS7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://1.bp.blogspot.com/_HTpoVIxYKtw/SmwCROCa5jI/AAAAAAAAABk/slNvFBrTkL4/s320/Charge-SS7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5362663751140697650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;So I said I'd be working on the quad tree decomposition... and I did. I implemented it and everything and the way I went about it just made it completely suck. After that failed real hard, I thought about how efficient it really was, I figured that every collision is one check, and the work to update the section each frame is significant compared to that, so I've decided to scrap that.&lt;br /&gt;&lt;br /&gt;So instead I created a simple particle engine. For the most part, I just took LazyFoo's particle engine and slightly modified it to fit how I wanted it to react. I may expand it a bit but at the moment I'm only worried about one thing: The colored surfaces.&lt;br /&gt;&lt;br /&gt;So the problem is that there is 4 surfaces that are used in the particles. LazyFoo has them as global variables but I doubt he'd do that in a real project. It's bad practice because the entire game doesn't need it. The only thing that actually needs it is the levels.&lt;br /&gt;&lt;br /&gt;So my problem is that I have to display the surfaces in the particle class, because if I declare them in another class, then they can't be accessed. I don't want every particle I create to create 4 surfaces because that becomes real inefficient, real fast. The solution is supposed to be static variables.&lt;br /&gt;&lt;br /&gt;I admit I forgot what the keyword was. I knew what it did though. As of now the variables aren't static, it's getting late so I'll fix it up tomorrow.&lt;br /&gt;&lt;br /&gt;The big problem is that static variables can't be initialized in the class they are created in, nor in header files. Not initializing it isn't an option because that causes static variables to not be in scope. So what I'll have to do, is initialize them in the play state, and see if that works.&lt;br /&gt;&lt;br /&gt;Well for now that's all I got... so I'll be back tomorrow for another update.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8803031575366299473?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8803031575366299473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/charge-development-day-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8803031575366299473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8803031575366299473'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/charge-development-day-5.html' title='Day 5 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HTpoVIxYKtw/SmwCROCa5jI/AAAAAAAAABk/slNvFBrTkL4/s72-c/Charge-SS7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-256642347368522796</id><published>2009-07-25T13:45:00.000-07:00</published><updated>2009-07-25T14:01:16.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Making up for Lost Time.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HTpoVIxYKtw/SmtylEEn2xI/AAAAAAAAABY/RGr7mtIBwAU/s1600-h/Charge-SS4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://1.bp.blogspot.com/_HTpoVIxYKtw/SmtylEEn2xI/AAAAAAAAABY/RGr7mtIBwAU/s320/Charge-SS4.png" alt="" id="BLOGGER_PHOTO_ID_5362505762388564754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HTpoVIxYKtw/Smtygad9B9I/AAAAAAAAABQ/aEIyTHK0_rM/s1600-h/Charge-SS5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://4.bp.blogspot.com/_HTpoVIxYKtw/Smtygad9B9I/AAAAAAAAABQ/aEIyTHK0_rM/s320/Charge-SS5.png" alt="" id="BLOGGER_PHOTO_ID_5362505682501044178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HTpoVIxYKtw/SmtycCmECII/AAAAAAAAABI/GIVLv5m10ds/s1600-h/Charge-SS6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://2.bp.blogspot.com/_HTpoVIxYKtw/SmtycCmECII/AAAAAAAAABI/GIVLv5m10ds/s320/Charge-SS6.png" alt="" id="BLOGGER_PHOTO_ID_5362505607373129858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well This isn't the actual development post for today. I woke up about three hours ago, and got to work. I finished everything I wanted in the rewrite. All my code is finally nicely commented and it's real clean and organized, the task now is to keep it that way. So as I go along I'll have to make sure I'm keeping those good habits. Anyways, this post is just about the day void of development, and the post I made like at 2 AM this morning that had no screen shots. I decided to make up for that with 3 screen shots. The first shows all 5 enemies and the player and bullets within the level. The second is after the player has been destroyed, and one enemy destroyed. The last is 2 enemies alive and the player alive.&lt;br /&gt;&lt;br /&gt;Anyways, I fixed the collision glitch. The problem was the rendering. The collisions were completely fine.&lt;br /&gt;&lt;br /&gt;So down in the code I had something like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;//Note: This is a function from LazyFoo's tutorials, so if you want more information on how&lt;br /&gt;//it works, check out LazyFoo's site.&lt;br /&gt;&lt;br /&gt;apply_surface(circle.x + circle.radius, circle.y + circle.radius, surEnemy, surScreen);&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So now what's the problem with this... In my Circle struct, (x,y) is the center of the circle. Surfaces are applied from the top left. Adding the radius to x and y means that the bottom right corner of the actual graphic on the screen will be treated as the top left when calculating the collisions. This meant that sometimes the bullet could completely miss it, and the collision would turn up true. It also meant that the bullet could go right through it and the collision would turn up false. The latter is how I found the glitch. I shot the bullet so perfectly that it went through the center of the first enemy and nothing happened&lt;br /&gt;and it continued up straight through all the enemies and the collision never registered. I just did a little searching and found the problem pretty quickly. Subtracting the radius instead of adding it completely fixed it.&lt;br /&gt;&lt;br /&gt;Well that's all I wanted to talk about. Today I'm gonna take a shot at the quad tree decomposition, so I'll make a post tonight about how it goes. Ciao!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-256642347368522796?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/256642347368522796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/making-up-for-lost-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/256642347368522796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/256642347368522796'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/making-up-for-lost-time.html' title='Making up for Lost Time.'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HTpoVIxYKtw/SmtylEEn2xI/AAAAAAAAABY/RGr7mtIBwAU/s72-c/Charge-SS4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5220719510912798610</id><published>2009-07-25T01:40:00.000-07:00</published><updated>2009-07-25T01:53:14.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 4 of Charge Development</title><content type='html'>I know there's a day that's not counted for. I didn't get anything done yesterday, so I hauled butt today.&lt;br /&gt;&lt;br /&gt;So the game actually compiles and works except for one collision glitch. Sometimes the bullets don't kill the enemy... it's weird.&lt;br /&gt;&lt;br /&gt;Anyways so what I've gotten done since I started rewriting the code two days ago. I've almost finished the rewrite. It's in a compilable form, but there's still a few touch ups to be made, including fixing that collision glitch. Its real late, and I haven't the slightest clue of where the glitch is coming from, otherwise I'd fix it now. The only 'new' feature, is that the player can shoot up to 5 bullets now, and there are now 5 enemies in my testing level.&lt;br /&gt;&lt;br /&gt;I made some nice hierarchies, but I think the inheritance needs some work. The biggest problems I had on this rewrite all seemed to do with inheritance. The first errors I was getting were because I was trying to directly access private data in the base class from a derived class. I decided it would be best to use protected data instead of private in these cases. It's like the best of both public and private. You get the data encapsulation of private member data, while being able to directly access them in a hierarchy. The second thing that really got on my nerves was the bass class not having the functions that the derived classes have.&lt;br /&gt;&lt;br /&gt;A great use of inheritance is how you can use a pointer to generalize. So if I wanted to create 5 enemies, but didn't know what type of enemies, I could make an array of pointers like:&lt;br /&gt;&lt;br /&gt;Enemy* enemy[5];&lt;br /&gt;&lt;br /&gt;So after I declare that, I can store any type of enemy in there as long as the enemy inherits from the Enemy class. That's exactly what I did, but when I needed to call some functions in it, like when deleting the bullets, I'd call a destroy_bullet() method, but destroy_bullet() isn't in the class Enemy. This caused me to use a lot of pure virtual functions.&lt;br /&gt;&lt;br /&gt;The first bit of research I want to get done, is to find a better way to control enemies with their projectiles and players with their projectiles. I want a way so I'm not stuffing base classes with pure virtual functions.&lt;br /&gt;&lt;br /&gt;Once I get this stuff figured out the next thing I'm going to add is quad tree decomposition... otherwise known as the section system! Once all that is done, and I'm satisfied with it, we'll move on to the fun stuff, AI and new types of projectiles =D.&lt;br /&gt;&lt;br /&gt;Well that's the update for yesterday, technically, so I'll try to post another tonight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5220719510912798610?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5220719510912798610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-4-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5220719510912798610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5220719510912798610'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-4-of-charge-development.html' title='Day 4 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-237939189109681000</id><published>2009-07-22T20:37:00.000-07:00</published><updated>2009-07-22T20:43:19.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 3 of Charge Development</title><content type='html'>I'm not sure how to describe today. After many unsuccessful tries to get the enemy to shoot how I wanted it to shoot, I finally had it. It shooted exactly how I wanted it to. As I looked upon the code, I saw horrible practices everywhere. I knew I could make my life easier if I had just done many things differently. I decided to use the sections thing which I found out is actually called quad tree decomposition (thanks avansc!). Anyways I've decided to use that with circular collisions.&lt;br /&gt;&lt;br /&gt;I also looked at the enemy and bullet classes and saw that it was going to suck when I wanted to create different types of enemies/bullets, so I grabbed a pen and paper and planned a lot out.&lt;br /&gt;&lt;br /&gt;I decided that since I'll be changing so much, I might as well rewrite it, and comment more of it, and make it look better overall. So most of my day has gone to that, I'm nearing the end as I'm typing this post. As of now it won't compile so no screen shots today.&lt;br /&gt;&lt;br /&gt;I'm camming the entire process with Camtasia and I'm goina to speed it up really really really fast and add in some touches and make it my intro video for any other videos I post.&lt;br /&gt;&lt;br /&gt;Well that's what's going on. I can't wait to finish because it's going to make many things so much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-237939189109681000?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/237939189109681000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-3-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/237939189109681000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/237939189109681000'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-3-of-charge-development.html' title='Day 3 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-878705052303616435</id><published>2009-07-21T22:24:00.000-07:00</published><updated>2009-07-21T22:51:52.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>Day 2 of Charge Development</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmaksMumyII/AAAAAAAAAAs/J8SgQVrW2HA/s1600-h/Charge-SS3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmaksMumyII/AAAAAAAAAAs/J8SgQVrW2HA/s320/Charge-SS3.png" alt="" id="BLOGGER_PHOTO_ID_5361153485669058690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmakluagFdI/AAAAAAAAAAk/e-vyvCYOQgU/s1600-h/Charge-SS2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmakluagFdI/AAAAAAAAAAk/e-vyvCYOQgU/s320/Charge-SS2.png" alt="" id="BLOGGER_PHOTO_ID_5361153374452454866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hey guys, today it seems I got less done, but I still spent about the same amount of time I think. Today I created a simple block enemy that moves side to side for testing purposes. I then added in a collision function for collisions between enemies/bullets and players/bullets. I think, since it will be like Galaga, I can skip the collisions between enemies, as they will probably just move side to side, and I'll have some sort of path function that they can randomly execute. So in short, collisions between enemies won't be necessary.&lt;br /&gt;&lt;br /&gt;I want to optimize how I check the collisions though, because checking all the enemies every frame just seems inefficient. At the moment I'm thinking of splitting the screen into 12 sections, and each object will have a variable to hold it's section. Each section would be 40 x 40 pixels, so I think that would only leave a couple checks, considering the sprites are 16x16 (bullets are 8x8).&lt;br /&gt;&lt;br /&gt;I haven't added the sections yet, because I'm waiting for some opinions from other people to see if there's a better way to do it, but as of now, I think that's how I'll do it.&lt;br /&gt;&lt;br /&gt;For all the games and demos I've made so far, I've always used bounding box collisions, its simple, you check 4 sides and your done. But I'm starting to find a 'bounding circle collision' detection might be more efficient. Instead of checking 4 sides, you check 1, it's all done with the radius. So I'm looking into that and maybe in the future I'll switch over to that.&lt;br /&gt;&lt;br /&gt;Now that we've gone over the things I've been thinking about, let's see what was actually done.&lt;br /&gt;&lt;br /&gt;The collision system has the capability for collisions between enemy/bullet and enemy/player, but it technically only handles enemy/bullet. The reason being the enemy moves left to right, as does the player, and the enemy doesn't shoot yet. But it's handled to where both objects involved in the collision are destroyed.&lt;br /&gt;&lt;br /&gt;So the small things I had trouble with were a few segmentation faults =(. I quickly found them, but just as quickly forgot to fix others. The first segfault came from the bullet. With my collision function it returns an enumeration that I created that will tell whether the player or player's bullet collided with the enemy/bullet. The problem was it didn't check to see if a bullet was even there at all, so whoila, segfault.&lt;br /&gt;&lt;br /&gt;The others were just the same, only with the player and enemy. They did their logic and rendering every frame, without any checks to see if they were NULL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So today was pretty easy, I didn't code too much, and didn't have that many problems, but let's take a look into what I'm hoping for tomorrow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I definitely want to look into those two collision efficiency issues I talked about, but I'm not going to spend the whole day doing that. I want to start planning out more, so tomorrow I'm going to grab some paper and start drawing out the hierchies for the play mode and enemies so I'll be planning out multiple enemies. I may also work on planning a class to make paths. I'm thinking I could have path objects and have a function in the enemy class that follows the path. In the enemies logic I'd just have it randomly choose between moving side to side, or following a path, then it'd randomly choose a path. But this is all speculation, just some ideas.&lt;br /&gt;&lt;br /&gt;But Tomorrow I'm definitely going to implement a timer and start capping the FPS. I'm also going to try to work on a system to get the enemy to shoot. If I find more positive views towards the whole idea about splitting the screen into sections, I could certainly implement that as well.&lt;br /&gt;&lt;br /&gt;Well it's getting late and I must get up early so tomorrow's another day, and another update!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-878705052303616435?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/878705052303616435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-2-of-charge-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/878705052303616435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/878705052303616435'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/day-2-of-charge-development.html' title='Day 2 of Charge Development'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HTpoVIxYKtw/SmaksMumyII/AAAAAAAAAAs/J8SgQVrW2HA/s72-c/Charge-SS3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-8071545318989271198</id><published>2009-07-20T21:49:00.000-07:00</published><updated>2009-07-30T09:26:29.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charge'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Development'/><title type='text'>A New Week, and A New Project</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmVO4W6ihmI/AAAAAAAAAAM/zuA6G5X-r2k/s1600-h/Charge-SS1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://3.bp.blogspot.com/_HTpoVIxYKtw/SmVO4W6ihmI/AAAAAAAAAAM/zuA6G5X-r2k/s320/Charge-SS1.png" alt="" id="BLOGGER_PHOTO_ID_5360777661585196642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well it's a new week and I've started a new project. After finishing Pong, I thought about what project I wanted to take on next. So I thought for a while, and thought Break Out or Galaga would be good ones, but after reading a comment on my Pong video from youtube, I decided to go with a Galaga type game. I've also decided to be a bit more 'artistic' and stray from exactly what Galaga is, so I'm calling it Charge. For now I think Charge is a temporary name, because I think all the different weapons (I'm planning power-ups, so that is plural) will have something to do with electricity. The other two games I have made took only about a week, but I am sure this one will take significantly longer. I'm excited from what will come of this game, because all the different things I'm going to work with that I haven't really worked with before.&lt;br /&gt;&lt;br /&gt;The things I'm really aiming to implement in this right now are:&lt;br /&gt;&lt;br /&gt;-Projectile System&lt;br /&gt;-Particle Engine&lt;br /&gt;-AI&lt;br /&gt;&lt;br /&gt;Those are three huge things in game developement, and it's pretty important that I work with them. I read a little bit about particle systems, and it doesn't seem like it will be too hard to implement a simple particle engine. The AI will probably be the toughest thing, though. I don't want it to have incredibly dumb AI, I want it to actually be relatively good. Of course there will be other stuff in the game, but I don't want to blab all about concepts, so let's get onto what I got done today.&lt;br /&gt;&lt;br /&gt;Early today, I did some set-up and created the state machine, and separated everything into files, and just made a project that compiled and created the screen. I then made some place holder graphics, one space-ish background, a red square to represent the ship, and a yellow square to represent the bullet.&lt;br /&gt;&lt;br /&gt;I then created a Play state, but one thing that grazed my mind was how I am going to implement levels, I'm still thinking about it, but I'm sure I'll come up with something semi-intelligent. Once I had my Play state mapped out, I created a Ship and Bullet class. I'm using pointers a lot in this one so everything isn't on the stack, I'm finally starting to allocate some memory on the heap =D. I soon found that it proses a few problems, you have to be very careful in that everything that is allocated, is deallocated. When I ran the first 'build' (I'm using that term VERY loosely), the movement was out of control, and when you shot a bullet it would travel just as I had expected. I then kept pressing Space (Note: Space is the button to shoot) repeatedly to see the effect. The effect was that the bullet in the air disappeared and it seemed to revert back at the ship. I knew better than that though.&lt;br /&gt;&lt;br /&gt;When I handled events for the ship, I had a switch block like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;switch(event.key.keysym.sym)&lt;br /&gt;{&lt;br /&gt;case ...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;case SDLK_SPACE:&lt;br /&gt;      bullet = new Bullet();&lt;br /&gt;      break;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See if you can spot the problem here...&lt;br /&gt;&lt;br /&gt;The memory allocated, was never deallocated, so it just keeps using more and more memory while the old memory is lost forever. I pulled an easy fix making sure to not let the player create another bullet if another was already active, I'll be sure to add in more bullets later, but for testing purposes I'll stick to one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next problem I faced had me stuck for about a half hour. I could shoot, and it wouldn't let me shoot until the bullet was NULL. I assumed when you use the keyword 'delete' that the pointer is automatically assigned the value of NULL, I guess not though.&lt;br /&gt;&lt;br /&gt;So what actually happened is the bullet would travel outside of the room, get deleted and now I have a stray pointer, then I have a statement that says something like:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;if(bullet == NULL)&lt;br /&gt;{&lt;br /&gt;      bullet = new Bullet();&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So pointer doesn't actually equate to NULL, because I didn't explicitly set it to NULL. After I figured that out, I set it to NULL, and now the projectile system somewhat works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So that's what I got done today, here's what I have planned for tomorrow:&lt;br /&gt;&lt;br /&gt;Add in stationary enemies (So Enemies with no AI)&lt;br /&gt;Add in collisions between the Bullet and Enemies&lt;br /&gt;Add in collisions between the player and enemies&lt;br /&gt;&lt;br /&gt;At the moment I'm thinking that a collision will result in destruction of both objects, and if at any time there is no player, the game will end, but when I get further in development to create a lives system, I'll just have a life be subtracted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But another little thing I've had my mind on is how I'm going to handle collisions, I'm going to have to look into it a bit more, because there's going to be an abundance of enemies in the actual game most likely, so I don't want to check for a collision between every object, so I'm going to have to find a more efficient way to do so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-8071545318989271198?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/8071545318989271198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/new-week-and-new-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8071545318989271198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/8071545318989271198'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/new-week-and-new-project.html' title='A New Week, and A New Project'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HTpoVIxYKtw/SmVO4W6ihmI/AAAAAAAAAAM/zuA6G5X-r2k/s72-c/Charge-SS1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-5840159443152114901</id><published>2009-07-18T14:03:00.001-07:00</published><updated>2009-07-18T14:31:55.674-07:00</updated><title type='text'>Back from vacation, here's the update!</title><content type='html'>Well after that long vacation, I should have something to show for it, and I do =0. I ended up actually finishing Pong, I accomplished everything I wanted in it, so I'm ready to move onto something else.&lt;br /&gt;&lt;br /&gt;So at the bottom of this post, I'll have a link to the video of Pong, so if you want to watch it, go ahead.&lt;br /&gt;&lt;br /&gt;Anyways, at the start of my vacation, the regular 2 player mode worked, except there was no system to keep score. I had a little bug on displaying the score, I was keeping track of the score in an integer called points, and I used a little C to display the integer as a string. so I was doing something like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;void add_point()&lt;br /&gt;{&lt;br /&gt;        ++points;&lt;br /&gt;&lt;br /&gt;        char pointAmount[3];&lt;br /&gt;        sprintf(pointAmount, "%d", points);&lt;br /&gt;        surPoints = TTF_RenderText_Solid(font, pointAmount, textColor);&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Since pointAmount is an array of characters, its passed as a char* into functions, which should satisfy the the function. Problem is it didn't. Later I found out, I had forgot to declare it as an array, so it couldn't convert from char to const char*. After that was fixed, the regular 2 Player Pong worked fine, the next step was to create so I could actually play alone =p.&lt;br /&gt;&lt;br /&gt;Now I haven't the slightest clue what I did wrong in making the CPU. I made it and I looked over it quite a lot. And after it was done, it was the buggiest thing I had ever seen in my life. The thing looked like it was on speed, bouncing around like no tomorrow. The more I tried to pin down what was wrong, the worse it got. I decided it was too horrible to even use, so I took it out and decided to start from scratch.&lt;br /&gt;&lt;br /&gt;Before I re-started the CPU, I implemented a pause feature. It sucked, but it worked for the time being. I just used an SDL_Delay after rendering if a pause flag was true.&lt;br /&gt;&lt;br /&gt;When I remade the CPU system, it worked completely how I had planned, so that portion was done with.&lt;br /&gt;&lt;br /&gt;I then upgraded the pause feature to what it is now, I had no problems with this, it was actually really simple.&lt;br /&gt;&lt;br /&gt;After that, I just wanted to add in sounds, change the graphics a bit, and add in a challenge mode. So the first thing I did was add in sounds, all the music I used was created by Rachel J. Morris (LussikkaMage) and were taken from her public domain sounds over at Moosader.com. The sound effects were just some other public domain sounds that I got from a random site that isn't really important.&lt;br /&gt;&lt;br /&gt;I made the graphics myself (hence why they suck), but it is a little more interesting than the black and white it was before.&lt;br /&gt;&lt;br /&gt;The challenge mode became a problem when I failed at making a timer. I screwed up the timer's pause and resume methods, so the score would go out of wack when the game was paused. I found the problem, I forgot subtract the current time, from the start time when I assigned the value to the ticks when paused.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After all that was done, I took a 3 day break and got some nice relaxation. I also made a little bouncing ball demo while I was up there, because I was bored, and wanted to play around with some gravity effects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well that's the end of Pong development, soon I'll start my next project and will document everything about it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=dr_FWwySfP4"&gt;Pong Video&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-5840159443152114901?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/5840159443152114901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/back-from-vacation-heres-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5840159443152114901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/5840159443152114901'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/back-from-vacation-heres-update.html' title='Back from vacation, here&apos;s the update!'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5841287919846961850.post-6690664873289508127</id><published>2009-07-15T09:09:00.000-07:00</published><updated>2009-07-15T09:49:28.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game Development Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Tic-Tac-Toe'/><category scheme='http://www.blogger.com/atom/ns#' term='Pong'/><title type='text'>The Creation of This Blog =)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Important Links/References: &lt;/span&gt;&lt;a href="http://www.palib.info"&gt;PAlib&lt;/a&gt;, &lt;a href="http://www.elysianshadows.com"&gt;Elysian Shadows&lt;/a&gt;, &lt;a href="http://www.lazyfoo.net"&gt;LazyFoo&lt;/a&gt;, &lt;a href="http://www.libsdl.org"&gt;SDL&lt;/a&gt;, &lt;a href="http://www.moosader.com"&gt;Moosader&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The links I have posted above are things worth checking out =p.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hey guys, I doubt any of you know, but I had another blog prior to this blog. Due to difficulties with Google accounts, it had to be deleted, and thus a new one made. I'm not going to go back and re-make all my posts, I think it will be better and easier if I just completely start anew and perhaps just bring up small details from previous posts.&lt;br /&gt;&lt;br /&gt;Now that all that stuff is over and done with, let's get on to the real introduction.&lt;br /&gt;&lt;br /&gt;I'm Skylar, and I'm a novice game programmer, and I have been programming for almost 2 years now. Up until this point, I haven't been real sure of what language/API I wanted to use, so I had a lot of mixed knowledge, and little to no experience. I finally got tired of it so I looked around, and decided to use C++ and SDL as my language and library, respectively.&lt;br /&gt;&lt;br /&gt;This blog will detail the different challenges I come across, how I solve them, and it will also cover what progress is made. I hope to be able to post something relevant everyday, except for this week, because I'm on vacation and won't have internet for much longer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the creation of this blog, I have my first game with SDL finished: Tic Tac Toe, and I am working on my second game, Pong. I know these are beginning projects you generally see everywhere, but I'm trying to give my Pong clone some extra features that make it stand out from the rest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now I guess I'll talk a bit about my inspiration for getting into game development. As a kid, I always had the dreaming fantasies most of us have about making our own game. We get great ideas and we don't think much about how hard game development actually is. Well a few friends and I got a bit overambitious and detailed a large game out, I still can't even remember what genre of game it was. Well through a friend, I stumbled upon Game Maker and used that quite a bit at first, but I didn't like it so much, I used it for school projects to score some extra credit, but I hardly used it.&lt;br /&gt;&lt;br /&gt;Then I bought a flashcart for DS. After searching through Youtube videos of how to set it up, I found a video about a DS homebrew project; Super Smash Bros DS. I watched the video, and even though it was only a simple demo, I was absolutely amazed. I thought, "I wish I could do something like that!" and through the comments box on that video, I found PAlib, a library for programming DS games. I found I would need to learn a programming language and I chose C. I then went through simple pieces of the library and had a lot of trial and error.&lt;br /&gt;&lt;br /&gt;I didn't understand a lot of key features of the C language, things I would need to understand to get anywhere with game development. For example, the first game I made with it, was a copy of Bowman for the DS, it had no menu/title screen, and it only had birds that could be shot. The graphics sucked, everything was either a line or a ball, and the programming on it was just horrid. When I would clear the screens, instead of making a function to call the 6 functions to clear the backgrounds and sprites from both screens, then reinitialize text on both screens, I just called the 6 functions everytime the screens needed to be cleared.&lt;br /&gt;&lt;br /&gt;After all that epic failure, I found another homebrew project that looked very interesting: Elysian Shadows. The project looked amazing, and they had a video series titled "The Adventures in Game Development." Falco (The leader of this team) also had some videos on how to get started on Game Development, I watched them and it completely changed my perspective on what I needed to do. He really laid it out. He didn't obscure anything, he told it like it was. So the next day I went out and bought a nice big book on C++, and after reading most of I started to learn the API, SDL. I found Lazy Foo's tutorials and I must say they are amazing.&lt;br /&gt;&lt;br /&gt;So that's how I got started on game development, hope any reading this make the jump into it as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5841287919846961850-6690664873289508127?l=xianforce-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xianforce-dev.blogspot.com/feeds/6690664873289508127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/creation-of-this-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6690664873289508127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5841287919846961850/posts/default/6690664873289508127'/><link rel='alternate' type='text/html' href='http://xianforce-dev.blogspot.com/2009/07/creation-of-this-blog.html' title='The Creation of This Blog =)'/><author><name>XianForce</name><uri>http://www.blogger.com/profile/05641374332245118597</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
