This is Neat! - Thu, Nov 18, 2010
Each time XNA People release a new version of XNA Game Studio, I have to perform a massive change in my code to make it compatible with the latest version of the framework, and I decide to change the name of my little game engine. So what I used to call RedBulb has became XNA 4.0 compatible, and is cleaner than ever, and from now on It’s going to be called “Neat”.
Read on to learn more about it and it’s cool new features…
I’ve made a massive change in the engine’s structure to make it more understandable and cleaner. For example, classes like Console and TrackHUD are now derived from XNA’s GameComponent and are treated like a game component. “GameParts” are renamed to “Screens” and “FormObjects” are now known as “Controls”.
On the other hand, Built-in menus are greatly improved, Controls can be easily altered from the console and scripts, there’s a Physics Simulator on the way and things got way more fun.
I’ve decided to disable all of the networking features because they are useless in practice; because XNA Redist Package does not support network code written with GamerServices and LIVE and games using this feature give a runtime error upon startup.
So to sum up the features, here’s a quick and dirty list of features available in the current version:
Components
TrackHUD
A game component that shows information about the song being played by XNA’s MediaPlayer
NetworkHUD [Development is on hold, feature is disabled in the current version]
Shows gamer’s information in the corner of the screen
Console
A highly customizable game console with the following key features:
- Customizable Font, Background Image / Animation, Background and Foreground Colors and Size
- Built-in commands with the ability to control many aspects of the game engine like:
- Changing Resolution and Full Screen mode (g_res, g_fullscreen)
- Changing Game’s Update speed (e_framerate)
- Loading Content Files (load)
- Activating Game Screens (e_show)
- Controlling MediaPlayer, Playing user’s media library and playing sound effects (a_sfx, a_mediaplay, …)
- Modifying GUI Controls
- Creating / Joining a network session [network features are disabled in the current version]
- Console Variables
- Customizable Commands
- Batch Files (Scripts)
- Color name / value parser
Menus
Pretty and extremely easy to use Menu system with the following built-in fully functional menus:
- Main Menu
- Options Menu
- In-Game Menu
- Quit Menu
GUI
Flexible controls with the following features:
- Event handling from within the code or dynamically via scripts
- Can be attached to the console to do the following actions dynamically:
- Create new Controls
- Modify the appearance of the Controls as well as their behaviors
- Move, Resize and Delete Controls
- Following controls are available in this version:
- Box
- Button
- CheckBox
- Image
- Label
- FancyLabel: Shows an animated and cool Text
- TypeWriter: Shows text with a type writer effect
Content Management
Shader Effects, Fonts, SoundEffects, Textures and Videos can be easily loaded and accessed using the structured content management system in this Game Engine
-
Content can be loaded dynamically from the scripts or by using LoadTexture(…), LoadSound(…), LoadFont(…), LoadSong(…), LoadEffect(…) and LoadVideo(…) methods
-
Support for Animated Textures with control on their frame rate
Graphics
- Ability to write shadowed text on the screen with custom shadow color
- Random Color Generator
- Transparency Generator
- Landscape Mode
- Ability to draw Lines with controllable thickness (LineBrush) [Unstable]
- Simple Pixel Shader Effects can be applied with the UseEffect(effectname) method
- Sample Shader Effects Included (HLSL):
- Color Add and Tint effects (coloradder.fx; colorfilter.fx)
- Triangle Filler (triangle.fx)
System
- Methods for handling Input from Keyboard and GamePad: IsTapped(…), IsPressed(…), IsReleased(…)
- Methods for handling Mouse movement and clicks: IsMouseClicked/Pressed(), IsRightMouseClicked/Pressed(), IsMidMouseClicked/Pressed()
- Screen Management (Screen)
Mathematics
- Segment/Segment, Line/Segment and Line/Line Intersection Finder
- Point in Circle Detection
- Point in Triangle Detection
- Vector to String and vice-versa conversion
- Polar to Cartesian Coordination conversion
- Simple Polygon-based physics simulator [In Development, Unstable]
- Polygon Triangulation
- Circle to Polygon Estimation
- Polygon Area Calculator
- Polygon/Polygon Collision Detection and Resolution (With MTD)
- Polygon Drawer
Network
(via GamerServices a.k.a. LIVE) [Windows version’s network support is disabled]
- Session Creation
- Session Finder (Normal and Asynchronous)
- Chat
- Send/Receive Data
I’ll get back to making the code compatible with Windows Phone 7 devices as soon as I learn that these devices are really going to last and be used. I’ve had a bad experience with a zune and We’ve all seen kins; So for now I’ll just stick with the Windows version because I don’t want to waste my time.
Neat is an open source project. You can browse and download the code from it’s Codeplex page at http://neat.codeplex.com