Game Projects using the FE-Game Engine

The code inside the Engine is Copyrighted by Law


XML Comments for latest Build can be viewed [ HERE ]
 
Release Brejkipejki
Version 0.04b
Date 2006-05-05
Requirements .NET 2.0 Download
DirectX End User Runtime Download
Download [ Here ] ( 1.7 MB )

Release Description
This release has some Really cool features, one of them is the new Audio playback, you can finaly play multiple audio files and make cool background music!
Another greate thing is the re-structure of code in the Device ( Input ) class and the way it it's handled. Read more about this in the changelog!

Changelog
* Re-structure in the FEInput class the following is changed:

* When you crete a Device such as mouse or keyboard you do no longer have to create the DeviceClasses or DataFormat,
you do only have to override the Standard Device such as StandardMouse, StandardKeyboard. The only thing you would want to override is the DeviceHandle method like this:

 
	/// <summary>
	/// This Mouse class overrides the StandardMouse class
	/// to be able to make certain events with the mouse
	/// </summary>
	class Mouse : StandardMouse
	{
		public Mouse(Engine game) : base(game) { }
 
		public override void DeviceHandle(FEInput mouse)
		{
			myGame.TextWriter(state.X.ToString(), 0, 0);
 
			mouse_x += state.X;
			if (mouse_x < Area.Left)
				mouse_x = Area.Left;
 
			if (mouse_x > Area.Right - 100)
				mouse_x = Area.Right - 100;
 
			Pad.X = mouse_x;
			buttons = device.CurrentMouseState.GetButtons();
 
			//myGame.TextWriter(string.Format("X: {0}\nY: {1}", mouse_x, mouse_y), 0, 120);
		}
	}


This will save you the user of my game engine alot of time, you do no longer have to manage the device yourself. You can now simply init it like this:

            
	// Init devices
	Keyboard gameControl = new Keyboard(game);  // Starting a Keyboard
	Mouse gameMouse = new Mouse(game);          // Staring a Mouse
 
	game.ConnectDevices(FEInput.GetDevices());  // Connect the devices to the current game 


* The FEInput.InputDevices now uses a HashTable instead of an ArrayList. This is because when the Game Engine checks for input or if a device is connected, in the previous code it had to loop through the arraylist with devices to see if it has an input. BUT now when I am using a hashtable and have added an Enumerator to the FEInput class i can simply do that like this:

 
	if ( InputDevices[InputType.Keyboard] != null )
	{
		currentDevice = (FEInput)InputDevices[InputType.Keyboard];
		currentDevice.Read(currentDevice);
		currentDevice = null;
	}

This means that the search is no longer needed, we can directly see if a divice exists or not, and by doing this, the game will be a litte faster ( not much though )

* Added FEMedia class that will allow you to play music. This class will allow you to play multiple files at the same time. And if you want you can enable the file to loop. You can also stop a sound when you want.

            
	// Play some background music!
	audio = new AudioPlayback(@"Audio\woho.wav");       // Load this file
	audio.Loop = false;                                 // We do not want to loop it
	audio.Play();                                       // Start playing


The FEMedia class is still in Testing mode, I have some features that has to be added before I can say it's complete for usage.

* It is now possible to set the VSync to True / False to turn it On and Off.

* The Render method in the Engine now sleeps at the end of the rendering to prevent high amount of CPU consuming.

* It is now possible to change background of the game whenever you want by using the Background property in the Engine class.

* The Event GameLoop has now been added and you can use this to create your own GameLoop like this:
     
	game.m_eventGameLoop += new Engine.GameLoop(Game.GameLoop);
	
	....
	
        /// <summary>
        /// This event will be ran every frame
        /// </summary>
        /// <param name="fps"></param>
        public static void GameLoop(float fps)
        {
        }

Im using the first one in the Start method and the GameLoop method is then used when the Render method in the Engine class is calling the Event GameLoop.

* I have added XML Comments to Everything even ordinary comments are included.


Issues that will be fixed in the next releases
* There will be support in the FEMedia class for managing the device with a minimum risk of crashing. Ie if you have played a song and it has finished. Then you exec .Stop() that would cause an error. In the next release this will be fixed.

* You may notice that the FPS will drop on single frames, ie that you have a stable 60 - 61 then suddenly 1 frame it dropps down to 55 and then up again. I will try to find the error and also do a little more optimizing in the Engine.


Functions that are to be added in the next Releases
* Video Playback such as Playing AVI as intro movie.

* The ball will be on the tab in the next release

* More sounds will be added soon

* A disco theme will be added, this will change the background everytime the ball hit's a brick ( Much later, just wanted to share my idea! )

* Smarter ways to calculate the brick impact

* The Engine need to be optimezed, we do not really need to check the keyboard and mouse for input 60 times per second. That is unessesary.



Managing the Game
How to start the Game: Unrar the archive and execute the Brejipejki.exe and then press F2 to enter the "Game", there is still not much you can do but i will come to that later!
I have removed the testing stuff such as:
* Displaying the current X / Y of mouse

* Displaying all active keys pressed

* Displaying Pressed Mouse Right / Left position

You can still use these if you want, but you will have add the code yourself.


Release Brejkipejki
Version 0.03b
Date 2006-05-03
Requirements .NET 2.0 Download
DirectX End User Runtime Download
Download [ Here ] ( 0.8 MB )

Release Description
This releases has A LOT of new features in it, I have been working all day to optimize the new sections. Read more about this in the Changelog.

Changelog
* FEInput class added, this new class will allow you to create a Device and listen to it's Data. This can be a Keyboard, Mice or a Joystick, the Class is independent from what you are using. But you will need to override the Render method to make it special for your device.

* Added Support for Keyboard

* Added Support for Mice

* Added Support for the Pad

* Optimized the FEText class and the RenderText method, in this new release you can add text my using the old AddText inside the Engine object, this now takes 1+ more arguments. The new argument is a string Identification which will allow you to simply delete the text.

* Controls Class has been added to the Game Section, this will allow you to create new devices such as Keyboards and Mices. You can use the default MDX 2.0.0.0 calls in the DirectInput part of the DirectX DLL to optimize the device and / or to add functions to it.
It can be rather difficult to create your own game at the moment using the Engine i've built, this is becuase I have NOT yet, I repeate I HAVE NOT yet
made any documentation. I will post a documentation on how to use the Engine on this site later on. And it will be included in the Releases aswell.
If you have any specific questions about how to manage your device, please contact me at Filip@SmartIT.se

* Displaying new Information, you will see the information on the screen when you start: FPS, Keys that are currently pressed on the Keyboard, Mouse Position, Mouse Button Down ( Left / Right ).



Managing the Game
How to start the Game: Unrar the archive and execute the Brejipejki.exe and press the Mousebuttons and move the mouse, see that the DirectInput is working properly , then press F2 to enter the "Game", there is still not much you can do but i will come to that later!

IMPORTANT
If you want to run this in Windowed mode for Debugging or testing go to the command prompt in windows, locate the Brejkipejki game and write Brejkipejki.exe -windowed , you can also use -fullscreen if i ever would forget to compile with it.

NOTICE
When you are in Windowed mode you can go outside the window with the mouse pointer, this WILL be fixed in the future. Also the game will die if you tab away from it and then tab back.


Release Brejkipejki
Version 0.02b
Date 2006-05-03
Requirements .NET 2.0 Download
DirectX End User Runtime Download
Download [ Here ] ( 0.3 MB )

Release Description
This is a more stable version of the "Brejkipejki"-game. Read the changelog for more information.

Changelog
* Optimized rendering of the Bricks

* Optimized OOP in VisualLayer with Brick and BrickOrganizer

* The Bricks now do not need to create a new Texture for each one
by using LoadBricks() the textures will be loaded into the memmory
and this is a performance enhancer.

* The Transparent Brick is no longer rendered, there will just be an empty space.

* the AddBrick() function has been modified and does now have an overloading method
this method takes an Engine and an amount of bricks that wants to be displayed.
In this way we do not need to make any bigger calculations in the Main class.

* The Start Main class ( Game.cs ) now takes 2 arguments either Brejkipejki.exe -fullscreen or -windowed.


NOTICE
The source for this is not included


Release Game Example
Version 0.01b
Date 2006-05-02
Requirements .NET 2.0 Download
DirectX SDK Download
Download [ Here ] ( 0.3 MB )

Release Description
This is the Example of the Game Engine in use. You can not interact in the game at all, the application is simply drawing some sprites,
showing the fps and drawing some text ( Credits ).

There is a posibility that you do need to install the latest version of DirectX SDK ( April 2006 ). This can be found at msdn.microsoft.com.


NOTICE
The source for this is not included


[ Latest Screenshot ]


This is a sample of how the current release looks like, you are maybe wondering why the FPS is now 61. Well the truth is, the Vertical Sync is on and the Render loop has a timer to it, so it wont consume all your CPU.

(C) Copyright Filip Ekberg 2006 All rights Reserved