Jump to content
  • Advertisement

Project: Project Taival

Dev Diary #023 - The Waiting Game



Hello, and welcome to the 23rd Dev Diary :) This week is more of a sitrep on the project planning, than anything else.

First though, a situation update regarding the memory kit I ordered - RipjawsX F3-1600C9D-16GXM;

The first choice was made because the memory kit was relatively cheap considering how tight timings it has. The said memory kit would have costed 76 euros, but apparently I was too late, as the importer stock ran out before the order could be handled. After that, I tried to order the higher clocked model, RipjawsX F3-2400C11D-16GXM. This kit costed 86 Euros, so hopefully this goes through before the stock runs out. The next option is a HyperX Red series memory kit, that would set me back 97 euros.


The Currently Planned Features

While the waiting game is going on regarding the video and actual development of the game, I have been brainstorming daily about the mechanics that I would really like to see in the game eventually. Here is a short list of features that I have been tinkering with on paper long and hard. This is not in a prioritized order;

  • Multi Tiered Leveling System - a semi-balanced leveling system, which makes leveling feel more rewarding.
  • Comprehensive Item Upgrades - Any sword, shield, or armor piece can be upgraded through various means. No more useless low level armors.
  • Multi Tiered Spells and Abilities - Even the lowest level abilities can be upgraded to have meaning in late game. No more nearly useless low level spells.
  • Improving Enchantments - Any item can be further improved by enchantments and existing enchantments can be re-imbued  to upgrade the effect to match your level.
  • a Very Rare and Hard To Get OP:d Character Class - This needs a combination of luck and skill to gain. Though even the OP:d character does have it's cryptonite.
  • Tiered Weapon Levels - Just like in MMOs and RPG games in general, Weapons and Armor will come in many tiers, from common to rare/unique. In this game, Unique really means Unique, in that it literally has only 1 piece existing in the game, with no possibility for anyone else to have one like it, unless the founder of such item decides to sell it. This will be really hard to balance, but I will still try this out in practice.

Bare in mind, that these are features that will be made after the prototype is finished and will take some time to implement properly and test how they balance out.

The main purpose of the fore mentioned mechanics is to grant a higher feeling of success, when you really achieve something. The game will have easily achievable things for casual players, to have them feel like they are progressing constantly. But for those, who like to collect everything, there is plenty of added value, when you find something that is truly unique. And most likely plenty of frustration also, when they learn that there is many unique items that have already been found.

Discovery is another thing I would very much like to see plenty of in the final game. All the procedurally generated worlds in games, such as 7 Days To Die, Civilization series and many other titles, have an immense replayability value added, thanks to having randomly generated maps. What I would like to try, is to bring more discovery to a fixed size map, that can be expanded with DLC's as updates or paid content. I still don't know how to do it for certain, but that is one of my long term priorities for the project.

I'll keep this weeks Dev Diary as a short teaser of a sort :) Also, you may expect an updated comprehensive list of all the planned features in the future. Thank you for tuning in, and I'll see you on the next one!

And as always, you can check out every possible mid week announcements about the project on these official channels;

• YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By HDR Games
      Yesterday I've published my new game to google play!
      I'm 16 years old and I will be very happy if you check my game and tell me what you think about it.
      It takes a minute to download and you won't regret it. Please let me know what you think in the comments.
      Best android game of the year! https://play.google.com/store/apps/details?id=com.HDRGames.FishTheFun
      Swim into the depths of the sea! Jump the highest and reach the sky. Beware of enemy fish, birds and obstacles. 
      1. Discover fish as you play!
      2. Buy fish to be able to play with them!
      3. Improve your best score to beat your friends'!
      4. Complete 100 quests to win rewards!
      5. Enter every day to receive daily rewards!
      6. Enjoy the sea, and Fish The Fun.
      Link to HDRGames website: http://hdrgames.sytes.net
      Link to HDRGames Instagram: https://www.instagram.com/hdr.games
      Watch the trailer: 

    • By stevenclark
      Hi Guys 
      I need help game this app marvel contest of champion can't run on your pc
    • By Catch_0x16
      Hello Folks,
      I'm writing a plugin for a simulator called 'X-Plane 11'. My plugin essentially calls on a DLL (Which I've written) that makes OpenGL calls to draw graphics onto the active draw target (it does no OpenGL initialization). I want this external DLL to represent the logic behind a computer screen, but not be directly coupled with the OpenGL context that it is being drawn to. In this current instance for example, I am drawing it to the screen in X-Plane, however, I may at some point want to draw it to the screen of a different game engine, or perhaps even just a windows program.
      The way I am trying to achieve this:
      Generate a frame buffer and texture Initialize texture and add it to the framebuffer On the drawcall... Bind to the frame buffer Call the dll's draw method Un-bind the frame buffer Bind to the host applications framebuffer Bind to the associated texture Draw a quad in the corner of the screen with appropriate texture coordinates Un-bind the texture I have the problem though that the output is always just a black square...(See attached image)
      The code goes a little like this (Only showing the relevant bits):

      #include <Windows.h> #include <string> #include "PluginHeader.h" #include <GL\glew.h> #include <gl\GL.h> #include <gl\GLU.h> #include "MFDSim.h" HINSTANCE g_MfdSimLibHandle = 0; XPLMWindowID g_MfdWindowID = 0; GLuint g_FrameBufferID = 0; GLuint g_fbTex = 0; GLuint g_rbo = 0; unsigned int g_MfdScreenWidth = 0; unsigned int g_MfdScreenHeight = 0; ///////////////////////////////////////////////////// // Standard plugin functions ------------------------ PLUGIN_API int XPluginStart( char* outName, char* outSig, char* outDesc) { strcpy(outName,"MFD Sim"); strcpy(outSig, "mfd"); strcpy(outDesc, "); int retVal = TRUE; glewInit(); HINSTANCE g_MfdSimLibHandle = LoadLibrary("./Resources/plugins/MFD_Sim_Plugin/win_x64/MFDSim.dll"); if (g_MfdSimLibHandle != nullptr) { try { MFD::mfdInit("./Resources/plugins/MFD_Sim_Plugin/config/layout.xml"); MFD::mfdGetWidthHeight(g_MfdScreenWidth, g_MfdScreenHeight); } catch (const std::exception& ex) { retVal = FALSE; } } else { retVal = FALSE; } return retVal; } PLUGIN_API void XPluginStop() { FreeLibrary(g_MfdSimLibHandle); } PLUGIN_API int XPluginEnable() { // We need to revert back to the appropriate frame buffer after we're done GLint currentReadFB = 0; GLint currentDrawFB = 0; glGetIntegerv(GL_READ_FRAMEBUFFER, &currentReadFB); glGetIntegerv(GL_DRAW_FRAMEBUFFER, &currentDrawFB); XPLMRegisterDrawCallback(OnDrawCall, xplm_Phase_LastCockpit, TRUE, nullptr); // Generate OPENGL stuff we need glGenFramebuffers(1, &g_FrameBufferID); glBindFramebuffer(GL_FRAMEBUFFER, g_FrameBufferID); glGenTextures(1, &g_fbTex); glBindTexture(GL_TEXTURE_2D, g_fbTex); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, g_MfdScreenWidth, g_MfdScreenHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, g_fbTex, 0); glGenRenderbuffers(1, &g_rbo); glBindRenderbuffer(GL_RENDERBUFFER, g_rbo); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, g_MfdScreenWidth, g_MfdScreenHeight); glBindRenderbuffer(GL_RENDERBUFFER, 0); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, g_rbo); glBindFramebuffer(GL_READ_FRAMEBUFFER, currentReadFB); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, currentDrawFB); return TRUE; } PLUGIN_API void XPluginDisable() { XPLMUnregisterDrawCallback(OnDrawCall, xplm_Phase_LastCockpit, TRUE, nullptr); glDeleteFramebuffers(1, &g_FrameBufferID); glDeleteTextures(1, &g_fbTex); } PLUGIN_API void XPluginReceiveMessage( XPLMPluginID inFrom, int inMsg, void* inParam) { } // Boilerplate DLL stuff BOOL WINAPI DLLMain( _In_ HINSTANCE hInstance, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved) { return TRUE; } ///////////////////////////////////////////////////// // MFD functions ----------------------------------- void HandleWindowKeyEvent(XPLMWindowID inWindowID, char inKey, XPLMKeyFlags inFlags, char inVirtualKey, void * inRefcon, int losingFocus) { if (inWindowID == g_MfdWindowID) { } } int OnDrawCall(XPLMDrawingPhase inPhase, int inIsBefore, void * refCon) { // We need to revert back to the appropriate frame buffer after we're done GLint currentReadFB = 0; GLint currentDrawFB = 0; glGetIntegerv(GL_READ_FRAMEBUFFER, &currentReadFB); glGetIntegerv(GL_DRAW_FRAMEBUFFER, &currentDrawFB); // Bind to our own frame buffer and draw our MFD glBindFramebuffer(GL_DRAW_FRAMEBUFFER, g_FrameBufferID); glBindFramebuffer(GL_READ_FRAMEBUFFER, g_FrameBufferID); glBindTexture(GL_TEXTURE_2D, g_fbTex); glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_TEXTURE_2D); if (!MFD::mfdDraw(1.0f)) { // TODO: Handle failure to draw } glBegin(GL_LINES); glColor4f(1.0f, 0.1f, 0.1f, 1.0f); glVertex2f(0.0f, 0.0f); glVertex2f(100.0f, 100.0f); glEnd(); glBindFramebuffer(GL_READ_FRAMEBUFFER, currentReadFB); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, currentDrawFB); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glVertex2f(0, 0); glTexCoord2f(0.0f, 0.0f); glVertex2f(0, g_MfdScreenHeight); glTexCoord2f(0.0f, 1.0f); glVertex2f(g_MfdScreenWidth, g_MfdScreenHeight); glTexCoord2f(1.0f, 1.0f); glVertex2f(g_MfdScreenWidth, 0); glTexCoord2f(1.0f, 0.0f); glEnd(); glBindTexture(GL_TEXTURE_2D, 0); return 0; }  

    • By viicty
      It's 1993 and you play as a deranged LAPD detective whose colleague got murdered. Get revenge by slaughtering half of the underworld in this retro, ultra-violent, side-scrolling shooter. Aggression and speed are the only elements that will keep you alive. Variety of weapons and an amazing synthwave & vaporwave soundtrack are there to help you.
      - Tons of blood
      - Story
      - 10 challenging levels, 3 bosses
      - 20 weapons, each weapon can be used to execute an enemy
      - Synthwave, vaporwave and dark ambient soundtrack by Catsystem Corp, Daniel Deluxe, Lazerpunk, Ugasanie, and Xerxes the Dark
      - Retro visuals
      Gameplay tips:
      - Combos and executions heal you up
      - Get 5 stars on a level to increase your max health
      - Melee weapons are most efficient against enemies with guns and vice versa
      - Plan all your moves ahead
      - Nearby enemies can hear your gunshots
      - Use shotguns at close range
      - Shotguns can destroy doors
      - A, D - Move left/right
      - W - Use stairs
      - Left mouse button - Attack
      - Right mouse button - Pick up/throw a weapon
      - Space - Execute an enemy
      DOWNLOAD, SCREENSHOTS, MORE INFO: https://viicty.itch.io/onduty
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!