I'm an experienced programmer specialized in Computer Graphics, mainly using Direct3D 9.0c, OpenGL and general algorithms. Currently, I am evaluating Direct2D as rendering technology for a professional application dealing with medical image data. As for rendering, it is a x64 desktop application in windowed mode (not fullscreen).
Already with my very initial steps I struggle with a task I thought would be a no-brainer: Rendering a single-channel bitmap on screen.
Running on a Windows 8.1 machine, I create an ID2D1DeviceContext with a Direct3D swap chain buffer surface as render target. The swap chain is created from a HWND and buffer format DXGI_FORMAT_B8G8R8A8_UNORM. Note: See also the code snippets at the end.
Afterwards, I create a bitmap with pixel format DXGI_FORMAT_R8_UNORM and alpha mode D2d1_ALPHA_MODE_IGNORE. When calling DrawBitmap(...) on the device context, a debug break point is triggered with the debug message "D2d DEBUG ERROR - This operation is not compatible with the pixel format of the bitmap".
I know that this output is quite clear. Also, when changing the pixel format to DXGI_FORMAT_R8G8B8A8_UNORM with DXGI_ALPHA_MODE_IGNORE everything works well and I see the bitmap rendered. However, I simply cannot believe that! Graphics cards support single-channel textures ever since - every 3D graphics application can use them without thinking twice. This goes without speaking.
I tried to find anything here and at Google, without success. The only hint I could find was the MSDN Direct2D page with the (supported pixel formats). The documentation suggests - by not mentioning it - that DXGI_FORMAT_R8_UNORM is indeed not supported as bitmap format. I also find posts talking about alpha masks (using DXGI_FORMAT_A8_UNORM), but that's not what I'm after.
What am I missing that I can't convince Direct2D to create and draw a grayscale bitmap? Or is it really true that Direct2D doesn't support drawing of R8 or R16 bitmaps??
Any help is really appreciated as I don't know how to solve this. If I can't get this trivial basics to work, I think I'd have to stop digging deeper into Direct2D :-(.
And here is the code snippets of relevance. Please note that they might not compile since I ported this on the fly from my C++/CLI code to plain C++. Also, I threw away all error checking and other noise:
Device, Device Context and Swap Chain Creation (D3D and Direct2D):
// Direct2D factory creation
D2D1_FACTORY_OPTIONS options = {};
options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
ID2D1Factory1* d2dFactory;
D2D1CreateFactory(D2D1_FACTORY_TYPE_MULTI_THREADED, options, &d2dFactory);
// Direct3D device creation
const auto type = D3D_DRIVER_TYPE_HARDWARE;
const auto flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
ID3D11Device* d3dDevice;
D3D11CreateDevice(nullptr, type, nullptr, flags, nullptr, 0, D3D11_SDK_VERSION, &d3dDevice, nullptr, nullptr);
// Direct2D device creation
IDXGIDevice* dxgiDevice;
d3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
ID2D1Device* d2dDevice;
d2dFactory->CreateDevice(dxgiDevice, &d2dDevice);
// Swap chain creation
DXGI_SWAP_CHAIN_DESC1 desc = {};
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.SampleDesc.Count = 1;
desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
desc.BufferCount = 2;
IDXGIAdapter* dxgiAdapter;
dxgiDevice->GetAdapter(&dxgiAdapter);
IDXGIFactory2* dxgiFactory;
dxgiAdapter->GetParent(__uuidof(IDXGIFactory), reinterpret_cast<void **>(&dxgiFactory));
IDXGISwapChain1* swapChain;
dxgiFactory->CreateSwapChainForHwnd(d3dDevice, hwnd, &swapChainDesc, nullptr, nullptr, &swapChain);
// Direct2D device context creation
const auto options = D2D1_DEVICE_CONTEXT_OPTIONS_NONE;
ID2D1DeviceContext* deviceContext;
d2dDevice->CreateDeviceContext(options, &deviceContext);
// create render target bitmap from swap chain
IDXGISurface* swapChainSurface;
swapChain->GetBuffer(0, __uuidof(swapChainSurface), reinterpret_cast<void **>(&swapChainSurface));
D2D1_BITMAP_PROPERTIES1 bitmapProperties;
bitmapProperties.dpiX = 0.0f;
bitmapProperties.dpiY = 0.0f;
bitmapProperties.bitmapOptions = D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW;
bitmapProperties.pixelFormat.format = DXGI_FORMAT_B8G8R8A8_UNORM;
bitmapProperties.pixelFormat.alphaMode = D2D1_ALPHA_MODE_IGNORE;
bitmapProperties.colorContext = nullptr;
ID2D1Bitmap1* swapChainBitmap = nullptr;
deviceContext->CreateBitmapFromDxgiSurface(swapChainSurface, &bitmapProperties, &swapChainBitmap);
// set swap chain bitmap as render target of D2D device context
deviceContext->SetTarget(swapChainBitmap);
D2D single-channel Bitmap Creation:
const D2D1_SIZE_U size = { 512, 512 };
const UINT32 pitch = 512;
D2D1_BITMAP_PROPERTIES1 d2dProperties;
ZeroMemory(&d2dProperties, sizeof(D2D1_BITMAP_PROPERTIES1));
d2dProperties.pixelFormat.alphaMode = D2D1_ALPHA_MODE_IGNORE;
d2dProperties.pixelFormat.format = DXGI_FORMAT_R8_UNORM;
char* sourceData = new char[512*512];
ID2D1Bitmap1* d2dBitmap;
deviceContext->DeviceContextPointer->CreateBitmap(size, sourceData, pitch, d2dProperties, &d2dBitmap);
Bitmap drawing (FAILING):
deviceContext->BeginDraw();
D2D1_COLOR_F d2dColor = {};
deviceContext->Clear(d2dColor);
// THIS LINE FAILS WITH THE DEBUG BREAKPOINT IF SINGLE CHANNELED
deviceContext->DrawBitmap(bitmap, nullptr, 1.0f, D2D1_INTERPOLATION_MODE_LINEAR, nullptr);
swapChain->Present(1, 0);
deviceContext->EndDraw();
↧
Direct2D fails when drawing a single-channel bitmap
↧
Mankind Reborn - Alpha stage - Massively Multiplayer Online Action RPG sci-fi game
Website: http://www.mankindreborn.com/
Mankind Reborn is a Cyberpunk MMO-Shooter, heavily inspired by EVE Online and Face of Mankind. Be a part of this dark/gritty cyberpunk universe where 5 factions are fighting for control of the galaxy, pick your side and shape the game. Be a policeman and fight crime or be corrupt, a criminal/drug dealer who causes havoc, a mercenary who fights for the highest paying client, a miner who gathers resources, a member of a corporation who creates and sells items to the markets, work your way up the ranks and lead a faction or just simply a civilian living day-to-day.
https://www.youtube.com/watch?v=cGyHiZdc1zM
For the ex-fom players:
Welcome back, this is not an official sequel, but more of a spiritual successor, I intent on recreating that old fom feeling and keeping the core gameplay that made the game so special, but giving space for the game to grow and expand to attract other players that have never played FoM before, the game will have a bit of everything for all kinds of gamers. My FoM itch grew too big, been watching videos for months now and I couldn't wait anymore so I decided take on the task of doing a FoM game by myself, I'm an experienced game developer with some indie titles under my belt, I got the time, the contacts and the motivation/passion to make this game come alive. It's being developed alongside the community, so we can bring forth that perfect FoM game that we've been craving for years, more information will be released soon!
First-Draft Design Doc (Just my ideas quickly thrown into a document, nothing here is official and can change at any time)
https://docs.google.com/document/d/1F0e ... sp=sharing
More videos below! (WORK IN PROGRESS)
Strip Club Footage
https://www.youtube.com/watch?v=dz80PVVd2NI
Earth Map Ambient Test
https://www.youtube.com/watch?v=EdpUqIfGpHI
Gameplay Mechanics
https://www.youtube.com/watch?v=EQCqmP2kBO8
As a little note you can go to the forums, find more information and be part of the crew, I am not any part of this team just spreading out who has played FoM,Eve. They have a discord and social media and also donations are close to $1,000! Please check them out on this hard project that they're working on donate 35 dollars to get access on Alpha stage.
PS: I'm not part of this development top just trying to grow and bring back the old and new players for this amazing development team that they're working hard on, also note you HAVE to be register on the forums and donate 35 dollars to access the Alpha stage. This thread or game might change in the future what you see might change up it's just displays. Thank you.
~Maxlee93
AMAZING SCREEN SHOOTS!
On the forums.
If you want to ask questions please be advise to go to our forums the team will be glad to answer for you, but I can try my best here to answer some for you guys.
↧
↧
Some thoughts about preferences in game design
Every single person reacts to the game in a different way and even quite similar in tastes gamers can like or dislike your game design. On the GameCrafts conference in Kiev was an interesting speech about human's personality influence on the preferences and derision in games.
What is is your opinion about it and does it really meter on the prototype stage of the game design?
↧
Spine 3.6 Sprite Animation Editor Released
Esoteric Software has made Spine 3.6 available. Spine is an animation tool for 2D animation in games. In the 3.6 release, the team focused on bug fixes and improving existing features, but they did manage to add a few major features, including:
Preview
Clipping
Tint Black
Mesh Manipulation Tools
Weight Painting
Point Attachments
And more...including runtime enhancements and optimizations.
A free trial is available, but full versions are available for purchase. Learn more from their blog post.
View full story
↧
Spine 3.6 Sprite Animation Editor Released
Esoteric Software has made Spine 3.6 available. Spine is an animation tool for 2D animation in games. In the 3.6 release, the team focused on bug fixes and improving existing features, but they did manage to add a few major features, including:
Preview
Clipping
Tint Black
Mesh Manipulation Tools
Weight Painting
Point Attachments
And more...including runtime enhancements and optimizations.
A free trial is available, but full versions are available for purchase. Learn more from their blog post.
↧
↧
Combat is important in rpgs
I feel like we can all agree that in every rpg combat is important, for example imagine a game that you defeat every opponent by mashing the attack button, what difference will a goblin and a Dragon will really have? If combat is not challenging in a logical way there is little reason to feel excited facing a fearful opponent like a Dragon over a goblin. ofcourse a good combat will be probably hard for me to make but i will try to push myself for atleast the basic mechanics of a challenging combat, hope i don't sound very cliche till now.
Having finished the basic graphics i will start working on the code now, hopefully a small test demo will be ready soon.
combat animation test
link to my deviantart gallery
Thanks for reading!
↧
Directx 11 Wpf Message pump
Howdy
Ive got a WPF level editor and a C++ Directx DLL.
Here are the main functions:
public static class Engine
{
//DX dll
//Init
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void Initialize(IntPtr hwnd, int Width, int Height);
//Messages / Input
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void HandleMessage(IntPtr hwnd, int msg, int wParam, int lParam);
//Load
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void Load();
//Update
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void Update();
//Draw
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void Draw();
//Shutdown
[DllImport("Win32Engine.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void ShutDown();
}
Okay so what is the proper way to get the window hosted inside a control and the pump the engine?
At the moment i have it inside a (winfom) panel and use:
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
source.AddHook(WndProc);
}
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
Engine.HandleMessage(hwnd, msg, (int)wParam, (int)lParam);
Engine.Update();
Engine.Draw();
return IntPtr.Zero;
}
But there's just a few problems:
Messages come from everywhere not just the panel (due to using the main window)
The input doesn't actually work
It's super duper ugly code wise
In terms of c++ side the normal enigne (non-editor ) uses this pump:
while (msg.message != WM_QUIT)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
//Input
if (msg.message == WM_INPUT)
{
//Buffer size
UINT size = 512;
BYTE buffer[512];
GetRawInputData((HRAWINPUT)msg.lParam, RID_INPUT, (LPVOID)buffer, &size, sizeof(RAWINPUTHEADER));
RAWINPUT *raw = (RAWINPUT*)buffer;
if (raw->header.dwType == RIM_TYPEKEYBOARD)
{
bool keyUp = raw->data.keyboard.Flags & RI_KEY_BREAK;
USHORT keyCode = raw->data.keyboard.VKey;
if (!keyUp)
{
Keyboard::SetKeyState(keyCode, true);
}
else
{
Keyboard::SetKeyState(keyCode, false);
}
}
}
}
time->Update();
engine->Update(time->DeltaTime());
engine->Draw();
}
Not the nicest loop but works for now for testing and things.
Now the Editor versions code is:
//Initalize enigne and all sub systems
extern "C"
{
//Hwnd is a panel usually
DLLExport void Initialize(int* hwnd, int Width, int Height)
{
engine = new Engine();
time = new Timer();
time->Update();
if (engine->Initialize(Width, Height,(WINHANDLE)hwnd))
{
//WindowMessagePump();
}
else
{
//return a fail?
}
}
}
extern "C"
{
DLLExport void HandleMessage(int* hwnd, int msg, int wParam, int lParam)
{
//Input
if (msg == WM_INPUT)
{
//Buffer size
UINT size = 512;
BYTE buffer[512];
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, (LPVOID)buffer, &size, sizeof(RAWINPUTHEADER));
RAWINPUT *raw = (RAWINPUT*)buffer;
if (raw->header.dwType == RIM_TYPEKEYBOARD)
{
bool keyUp = raw->data.keyboard.Flags & RI_KEY_BREAK;
USHORT keyCode = raw->data.keyboard.VKey;
if (!keyUp)
{
Keyboard::SetKeyState(keyCode, true);
}
else
{
Keyboard::SetKeyState(keyCode, false);
}
}
}
}
}
//Load
extern "C"
{
DLLExport void Load()
{
engine->Load();
}
}
//Update
extern "C"
{
DLLExport void Update()
{
time->Update();
engine->Update(time->DeltaTime());
}
}
//Draw
extern "C"
{
DLLExport void Draw()
{
engine->Draw();
}
}
//ShutDown Engine
extern "C"
{
DLLExport void ShutDown()
{
engine->ShutDown();
delete time;
delete engine;
}
}
Any advice of how to do this properly would be much apprcieated.
p.s in my opinion the loop should kind of stay the same? but allow the wpf to psuh the message through some how and the loop within c++ calls the update and draw still so :
//Gets message from C# somehow
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
//Input
}
time->Update();
engine->Update(time->DeltaTime());
engine->Draw();
//returns back to c#
^ some how have that in c++ as the message pump called from wpf
Thanks
↧
ID3D11Query reporting weird results
I implemented DX queries after this blog post: https://mynameismjp.wordpress.com/2011/10/13/profiling-in-dx11-with-queries/
Queries work perfectly fine... for as long as I don't use VSync or any other form of Sleep. Why would that happe? I record queries right before my Compute/Dispatch code, record right after and then read the results (spinning on GetData if returns S_FALSE).
When I don't VSync then my code takes consistent 0.39-0.4 ms. After turning VSync on it starts with something like 0.46 ms, after a second bumps up to 0.61 ms and a few seconds after I get something like 1.2 ms.
I also used this source: http://reedbeta.com/blog/gpu-profiling-101/
The difference here is that the author uses the disjoint query for the whole Render() function instead of using one per particular measurement. When I implemented it this way the timings were incosistent (like above 0.46, 0.61, 1.2) regardless of VSync.
↧
The sound to Charly Men's BIZARRE.
Charly Men, the author of Charly Men's BIZARRE, composed and recorded a song called "perdue". This song is a potential candidate to be played in the game as background music.
We think it's up to the player, later on, to decide which song would fit perfectly. Keep in mind that the game is supposed be dark and bizarre. But take your time, the game is not yet ready! ;-)
↧
↧
Epic Games Releases Early Access for VR Mode on Mac
Epic Games has released early access support for developing VR applications on Mac platforms through the Unreal Engine GitHub repository. You can get access by going to the private VR on Mac branch (login required). Review the readme for instructions on how to get started.
At this year’s WWDC, Apple announced VR support for their upcoming version of OS X, High Sierra (macOS 10.13 and above). Epic Games took the stage with ILM to demonstrate the new functionality using the Unreal Engine in VR Mode on the new iMac Pro.
ull support for VR development on macOS will be in upcoming Unreal Engine 4 releases. Mac VR support, together with general Metal 2 support and wide-ranging Mac optimizations, will ship in Unreal Engine 4.18 binary tools (via the Epic launcher) starting with previews in September and with the full release in early October.
Read about SteamVR for macOS, including Valve’s beta release, here.
View full story
↧
Town and Rivers [Puzzle game test]
Puzzle "Towns and rivers"
I’ve recently implemented the mechanics of a puzzle that seemed very interesting to me.
As you progress through the game the levels vary in different parameters. You can choose any level you want.
I added a vote after each level and I would be very grateful if you could estimate the gameplay after passing each level.
There is a version for browser and for Android devices. Links are attached below:
https://multicorn.itch.io/towns
townsandrivers.apk
↧
When To Use Pointers?
I've just moved from C#/Java to C++ and, as you might expect, a big problem I'm facing is understanding when to use pointers (I know that Java and C# use pointers under the hood but I never needed to understand them to program :P). I understand conceptually what pointers are but I can't seem to think of when to actually use them over just plain objects, except for perhaps arrays.
What makes it worse is that while most people on the internet say to avoid pointers when possible, whenever I read source codes for game engines and for games developed in C++, I see pointers everywhere.
For example, an excerpt from Game Programming Patterns:
class GameObject
{
public:
int velocity;
int x, y;
GameObject(InputComponent* input,
PhysicsComponent* physics,
GraphicsComponent* graphics)
: input_(input),
physics_(physics),
graphics_(graphics)
{}
void update(World& world, Graphics& graphics)
{
input_->update(*this);
physics_->update(*this, world);
graphics_->update(*this, graphics);
}
private:
InputComponent* input_;
PhysicsComponent* physics_;
GraphicsComponent* graphics_;
};
Why shouldn't InputComponent, PhysicsComponent, and GraphicsComponent just be objects?
I guess all I'm asking for is help understanding why and when to use pointers.
Thanks (sorry for all the text).
↧
Building Block Heroes - Lessons Learned
Building Block Heroes is not the first game I've worked on. About half a year ago I released a game called World Boxing Manager. The process of doing so, including the Greenlight process, taught me much about the game development world.
World Boxing Manager
World Boxing Manager itself was an evolution of a free game I made in university called Kickboxing Manager. Both games were developed in C++, using the Qt API for the UI. Though both tools are useful to know for both game development and otherwise, the choice of this toolset required a lot of "engine" work that probably could have been made both easier and quicker with an actual game engine. Additionally, since I made the rather bone-headed decision of coding the UI elements by hand rather than using Qt Creator, it led to a lot of difficulty building a UI, which probably made the game uglier and clunkier than it needed to be behind the scenes.
Nevertheless, the niche nature of text-based sports simulators in general, coupled with the positive reception I received for Kickboxing Manager led me to believe that there was a built-in audience for my game that would cause it to sail through Greenlight.
However, I soon found out that graphics really do matter regardless of the strength of an idea. There were plenty of people who thought the concept of World Boxing Manager was interesting, but were turned off by the minimal graphics in the game. I had made the mistake of thinking that just because some people (myself included) are capable of overlooking crap graphics in favour of fun gameplay, everyone is. As it turns out, most people aren't.
I also learned during the Greenlight process the importance of showing off a game early to get feedback. It seems like a relatively obvious step to take, but I'm the type of person who simply puts his head down and works on something that interests me. Showing off my work before it's done sort of goes against my nature. Contrary to my fears, posting about my game on boxing-related forums and subreddits not only helped provide ideas about features to put in the game, but helped garner the votes I needed to scrape through Greenlight. I got a bit lucky because there was a built-in audience for World Boxing Manager - after all, good boxing games in general are quite rare nowadays, and boxing games on PC even more so.
Releasing the game was only the first part of the journey. The first hiccup I encountered post-release was a nasty glitch in the game that caused it to simulate non-user matches and events at a crawl for some people. I was aware of this bug, but it only took about 5-8 seconds per day on my own system. I assumed that it was manageable, and by the time I realized it might bother people, I was unwilling to tear the code apart. It proved to be a terrible mistake, as many of the early negative reviews of the game specifically mentioned the issue as the reason why.
I've since fixed the issue, but many people who were looking forward to the game felt disappointed by it, which matters far more to me than any kind of financial hit the game might have taken. After all, I never expected such a niche game to be a hit, I just wanted a boxing manager game on the PC that people would enjoy.
Additionally, the complexity of the finished game turned people off of it a lot more than I expected based on the feedback I had gotten for Kickboxing Manager. Many people who tried the game bemoaned the lack of a tutorial, or the fact that many of the game's features weren't very intuitive. It's to be expected somewhat from a manager game, but I still felt I could have made a more accessible experience.
Building Block Heroes
When I decided upon a new game to work on, I deliberately set about correcting the above issues. For starters, I decided to use an actual game engine and design a game that would take advantage of its features as much as possible so as to reduce the amount of wheel re-invention I had to do. For this purpose I decided upon Godot. Its open-source nature not only made it an attractive option due to being free to use under the MIT license, it also meant that I could theoretically extend its features using C++ if I had to.
The actual inspirations and thought processes behind the design of Building Block Heroes will be detailed in a later article, but long story short I decided to take the opposite approach to game design than I had taken previously. Rather than designing an uber-complex and in-depth game that would take a long time to get into, user-friendliness be damned, I decided to explore an idea that was instead incredibly simple to get into at first glance. Building Block Heroes, after all, is essentially a block puzzle game and a platformer game mashed together.
There's obviously more going on under the hood, but ultimately most end users and gamers should be able to pick the game up easily. It also makes it easier for me as a developer - this is the first non-GUI based game I've ever made, and making a simple game allows me to learn how to deal with things like collision detection and game loops without ripping my hair out too much juggling tons of features.
Choosing a simple game also made it possible to address the criticisms over the graphics in my previous games. Had I chosen to make a more complex game, I would have had to learn how to produce graphics and audio while still coding a game that was time-consuming and draining.
Keeping the concept simple meant that I could develop the game as a programmer while still having the time and energy to develop my skills in the other aspects of game development. Not only would such a game be less of a headache to make in general, there would also be less art and music to produce due to having less in the way of, say, equipment art or sub-menus to deal with.
For Building Block Heroes, therefore, I was able to spend several weeks just practicing art using a tablet and music using MuseScore. I'm not going to pretend that I'm particularly great at either, but I'm happy with the results I've seen, and I feel comfortable showing off the work I've produced. The relative lack of assets needed compared to an RPG or something also makes the whole endeavour of producing my own assets much less daunting.
Nevertheless, I'm far from being an expert at anything, which is why I've decided to launch a devblog of Building Block Heroes before it's close to being done. I'm hoping that by doing so I'll be able to catch any issues early on, which will not only produce a better product in the end, but will hopefully prevent any game-breaking issues such as the one that hamstrung World Boxing Manager upon its release. I can't rely on a built-in audience this time around - I need to make sure that I engage observers and gamers as much as possible.
Finally, regarding the learning curve of the game, instead of forcing trial-and-error upon the players I've placed tutorial levels throughout the game, which I hope will alleviate any issues about user-friendliness this time. Even though they were a pain to script, I figure this time it's better to put as much inconvenience upon myself as possible if it means taking that burden off the end users.
Making games can be a long and arduous process some (read:most) of the time, and many of us wish we could spend all of our time developing them. However, every journey begins with a first step, and as long as each steps moves us forward from the last one, we'll all get to our destination eventually. I'm hoping the lessons I learned from my first game will truly help me with this game and every one I make afterwards.
This was a long read, but I hope you enjoyed it!
↧
↧
Mobile Game Reviews: Let's Talk Castle Battles
In this daily blog (and video)-series I take a first impressions look at the best mobile games that I come by. Be sure to share your favorite mobile game with the rest of us in the comments below!
Castle Battles is a RTS game (like Settlers) with a very iconic and unique art style, "optimized" for mobile that so each level only takes 5-10 minutes.
There are two objectives; control iron ores and gold mines to build new castles and troops respectively. Controls work great for mobile, and the voiced conversations in the storyline are genuinely fun. Each of the 40 levels have 4 difficulty modes too, so there should be enough to dive into for everyone.
If you are new to or don't typically play strategy games, this is a great entry into the genre. First campaign is free, the rest 3 cost $4.99.
My thoughts on Castle Battles:
Google Play: https://play.google.com/store/apps/details?id=com.lightarc.castle&hl=en iOS: https://itunes.apple.com/us/app/castle-battles-strategy-but-fast/id1210311968?mt=8
Subscribe on YouTube for more commentaries: https://goo.gl/xKhGjh Or join me on Facebook: https://www.facebook.com/mobilegamefan/ Or Instagram: https://www.instagram.com/nimblethoryt/ Or Twitter: https://twitter.com/nimblethor
↧
Game Design College Major Question
Hi, quick questions. I have geared my high school education towards more engineering based classes (like advanced classes in chem, physics, calc, CAD, and a computer science principals class). If I wanted to major in Game Design in college, firstly, would it be more beneficial to double major in Game Design and something like Software Engineering, or Computer Engineering, and secondly, considering that I have a more science and math based high school course load, with only two classes geared towards what I believe are some of the main prereqs (correct me if I am wrong) for a game design type major(Computer Science Principals, and CAD), would it be more beneficial to start studying as an engineer and add the Game Design option, or would it be better vice versa?
↧
Picking a real-time strategy engine
So I have a 12 year old son who wants to dip his toes in game development, while I am good enough at programming but know very little about game dev specifically, or graphics. And from the advice I already got. trying a project of his own is (surprisingly) a favored option. His favourite genre is real-time strategy, and I do have a ready lore set that would make for two factions with wildly different units (balancing that is a topic for another say).
But while my favourite language is Python, I'm not exactly optimistic about him implementing a full RTS UI from scratch with Pygame. What with a search for an RTS in Pygame yielding a huge lot of unfinished stuff... So I think he needs to start with a genre specific RTS engine.
Python bindings are not essential. I can work out any language and help him work that out. While something like ANSI C would be a major pain, most modern high-level languages, from Java to LUA, would be acceptable. Free to use is a hard requirement, open source is preferred but not essential. Running the games on Android and making them available as Flash would be a bonus but very much not essential.
From googling alone, SpringRTS is the number one contender for now, but I would really appreciate advice from people who actually know what they are talking about. (Unlike y own position at this point).
↧
[Android][iOS][Free] Word Way - Guess what a word!
Hi!
It's my first game and I want to present it for you. Rules are very easy - just guess what a word is and put letters in right position!
Screenshots:
Free:
Apple Store
Google Play
↧
↧
Nuendo 8 Shipping
Steinberg Technologies GmbH Nuendo 8 is now available. Nuendo 8 includes an array of dedicated tools and capabilities for movie/television audio post-production facilities and video game sound designers and composers.
Steinberg Media Technologies GmbH today released its advanced audio post-production system after first announcing Nuendo 8 at the Game Developer Conference in San Francisco earlier this year.
The latest version of Nuendo 8 contains many exciting new tools and capabilities alongside its powerful feature set. First and foremost is Game Audio Connect 2 that transfers entire music compositions from Nuendo to the Wwise middleware while including audio and MIDI tracks along with cycle and cue markers. Direct Offline Processing together with its Live!Rendering technology lets users apply frequently required processes in an offline plug-in chain and render offline processes in real time, while Renamer automatically assigns new names to events. The Sound Randomizer plug-in creates different variations of a sound instantaneously, adjusting its pitch, timbre, impact and timing. The newly introduced Sampler Track allows users to drag and drop audio samples from the MediaBay into it in order to easily play and manipulate the samples. Also new to the table is the virtual-analog Retrologue 2 synthesizer, the second version of a VST instrument pertaining to the included set of features that was previously available as the NEK (short for Nuendo Expansion Kit). Other highlights are the User Profile Manager, HALion Sonic SE 3, the newly developed video engine, ADR enhancements, new effects processors, such as the eight-band fully parametric Frequency EQ, a fine selection of sounds taken from the 2017 Hybrid Library by Pro Sound Effects and much more.
Visit www.steinberg.net/nuendo for details on Nuendo services and solutions.
For a detailed introduction to Nuendo 8, Steinberg is inviting Nuendo professionals to join the
workshops to be hosted these upcoming months in many parts of the world. Refer to www.steinberg.net/nuendo8worldtour for the current schedule on Nuendo 8 workshops
worldwide.
Availability and pricing
The Nuendo 8 full retail version is available from resellers and through the Steinberg Online
Shop. The suggested retail price for Nuendo 8 is 1,899 euros, including German VAT.
Various downloadable updates are exclusively available through the Steinberg Online Shop.
Customers who have activated Nuendo 7 or previous versions since May 10, 2017, are eligible
for a free, downloadable Grace Period update to the latest version.
New features of Nuendo 8
Game Audio Connect 2 for transferring whole music compositions from Nuendo as music segments into Wwise
Direct Offline Processing for applying the most often used offline processes as a chain for one or multiple selected clips, including LIVE!Rendering
Sound Randomizer for creating different variations of a sound in seconds just by tweaking four parameters
Renamer for automatic renaming of events within a Nuendo project
Sampler track for easy creation of sample-based instruments from audio files
MixConsole History for undoing/redoing tracked down changes made in the MixConsole
New effects and updated plug-ins including Frequency EQ, HALion Sonic SE 3, Retrologue 2, AutoPan, Maximizer and more
User Profile Manager to store and recall program settings and preferences easily
ADR improvements including automatic speech alignment and remote ADR support (available within a future maintenance update)
Enhanced workflow and performance including a new video engine, Plug-in Sentinel, the
Lower Zone, dedicated punch points, side-chaining for VST 3 instruments and over 10 other improvements
↧
Nuendo 8 Shipping
Steinberg Technologies GmbH Nuendo 8 is now available. Nuendo 8 includes an array of dedicated tools and capabilities for movie/television audio post-production facilities and video game sound designers and composers.
Steinberg Media Technologies GmbH today released its advanced audio post-production system after first announcing Nuendo 8 at the Game Developer Conference in San Francisco earlier this year.
The latest version of Nuendo 8 contains many exciting new tools and capabilities alongside its powerful feature set. First and foremost is Game Audio Connect 2 that transfers entire music compositions from Nuendo to the Wwise middleware while including audio and MIDI tracks along with cycle and cue markers. Direct Offline Processing together with its Live!Rendering technology lets users apply frequently required processes in an offline plug-in chain and render offline processes in real time, while Renamer automatically assigns new names to events. The Sound Randomizer plug-in creates different variations of a sound instantaneously, adjusting its pitch, timbre, impact and timing. The newly introduced Sampler Track allows users to drag and drop audio samples from the MediaBay into it in order to easily play and manipulate the samples. Also new to the table is the virtual-analog Retrologue 2 synthesizer, the second version of a VST instrument pertaining to the included set of features that was previously available as the NEK (short for Nuendo Expansion Kit). Other highlights are the User Profile Manager, HALion Sonic SE 3, the newly developed video engine, ADR enhancements, new effects processors, such as the eight-band fully parametric Frequency EQ, a fine selection of sounds taken from the 2017 Hybrid Library by Pro Sound Effects and much more.
Visit www.steinberg.net/nuendo for details on Nuendo services and solutions.
For a detailed introduction to Nuendo 8, Steinberg is inviting Nuendo professionals to join the
workshops to be hosted these upcoming months in many parts of the world. Refer to www.steinberg.net/nuendo8worldtour for the current schedule on Nuendo 8 workshops
worldwide.
Availability and pricing
The Nuendo 8 full retail version is available from resellers and through the Steinberg Online
Shop. The suggested retail price for Nuendo 8 is 1,899 euros, including German VAT.
Various downloadable updates are exclusively available through the Steinberg Online Shop.
Customers who have activated Nuendo 7 or previous versions since May 10, 2017, are eligible
for a free, downloadable Grace Period update to the latest version.
New features of Nuendo 8
Game Audio Connect 2 for transferring whole music compositions from Nuendo as music segments into Wwise
Direct Offline Processing for applying the most often used offline processes as a chain for one or multiple selected clips, including LIVE!Rendering
Sound Randomizer for creating different variations of a sound in seconds just by tweaking four parameters
Renamer for automatic renaming of events within a Nuendo project
Sampler track for easy creation of sample-based instruments from audio files
MixConsole History for undoing/redoing tracked down changes made in the MixConsole
New effects and updated plug-ins including Frequency EQ, HALion Sonic SE 3, Retrologue 2, AutoPan, Maximizer and more
User Profile Manager to store and recall program settings and preferences easily
ADR improvements including automatic speech alignment and remote ADR support (available within a future maintenance update)
Enhanced workflow and performance including a new video engine, Plug-in Sentinel, the
Lower Zone, dedicated punch points, side-chaining for VST 3 instruments and over 10 other improvements
View full story
↧
Developer looking for learning partners C# Monogame
Hello i'm a C# .Net developer with about 6 years professional experience, looking to learn to make games using C# and Monogame. I'm fairly new to Monogame and just working my way through a few tutorials. It would be nice to have a partner(s) who are either working together on the same project or just all working through the same tutorials. We can ask questions when we get stuck, discuss game ideas, learn together. I'm open to working with people of varying skill levels, some programming experience would be preferred. But if you are brand new i'm very willing to help teach you some basics. I'd prefer to use discord to chat but am open to other options.
My interest in games is pretty varied, and am really open to working on a variety of projects. Ideally we keep the initial projects small in scope as we learn. I'd love to build up to larger scale RPG projects, I love playing co-op games as well so ideally we spend some time learning to make networked games as well.
Feel free to message me on here, or email me saville.rich@gmail.com.
↧