Jump to content
  • Advertisement

All Activity

This stream auto-updates     

  1. Past hour
  2. In order to stay out of trouble, I'm going back to work. Previous Blog Entry Today's topic is my drop in game state manager system for moving between game screens such as an introduction sequence, main menu hierarchy, game play and first say on app termination. I don't remember where I initially found this gem because it has been quite a number of years that I've been reusing this. The concept is simple though. Manage screens as a stack. Push a screen pointer to the back to become active and pop to activate the previous. So how do we get a system like this up and running? The following is a condensed version (bare bones). Two objects start us out, First a manager and an abstract base class. From the abstract, we derive the game screen objects. Each screen object handles their own behavior not knowing anything about the others. // file : GameState.cpp #include "olcPixelGameEngine.h" // <-- yours will be different #include "GameState.h" #include "States/intro.h" #include "States/game.h" #include "States/menu.h" using namespace Core; std::shared_ptr<States::Intro> introState; std::shared_ptr<States::Menu> menuState; std::shared_ptr<States::Game> gameState; void StateManager::initialize(olc::PixelGameEngine* engine, vec2 clientSize) { this->engine = engine; introState = std::make_shared<States::Intro>(this, clientSize); menuState = std::make_shared<States::Menu>(this, clientSize); gameState = std::make_shared<States::Game>(this, clientSize); states.push_back(menuState); #ifdef _RELEASE states.push_back(introState); #endif } void StateManager::shutdown() { introState->shutdown(); menuState->shutdown(); gameState->shutdown(); } void StateManager::changeState(States::Base_state* _state) {} void StateManager::pushState(States::Base_state* _state) {} void StateManager::popState() { states.pop_back(); } void StateManager::handleEvents(eStateAction _action) { switch (_action) { case eStateAction::pause: if (states.back()->name == "game_state") states.pop_back(); break; case eStateAction::play: if (states.back()->name == "menu_state") { int w = engine->GetDrawTargetWidth(); int h = engine->GetDrawTargetHeight(); RECT rect = { 0, 0, w, h }; states.push_back(gameState); } break; case eStateAction::win: if (states.back()->name == "game_state") { MessageBox(0, "you win", "", 0); //winState->winnerName = gameState->getWinnerName(); //winState->winningTime = gameState->getTimeString(); //states.push_back(winState); } break; case eStateAction::loose: if (states.back()->name == "game_state") { MessageBox(0, "you loose", "", 0); //states.push_back(scoreState); } break; case eStateAction::quit: if (states.back()->name == "menu_state") PostQuitMessage(0); if (states.back()->name == "game_state") { ::ShowCursor(true); ::ClipCursor(nullptr); states.pop_back(); } if (states.back()->name == "score_state") states.pop_back(); if (states.back()->name == "win_state") { // todo : record score gameState->reset(); states.pop_back(); } break; } // end switch(action) } void StateManager::update(float deltaTime) { states.back()->update(deltaTime); } void StateManager::draw() { states.back()->draw(); } With the manager out of the way, the base class for the stack-able objects. // file : base_state.h #ifndef _engine_core_states_base_state_h_ #define _engine_core_states_base_state_h_ #include <olcpixelgameengine.h> #include <string> namespace Core { namespace States { // abstract class Base_state { public: Base_state(void* _manager, std::string _name, vec2 _clientSize) { pManager = _manager; name = _name; clientSize = _clientSize; } virtual void initialize() = 0; virtual void shutdown() = 0; virtual void pause() = 0; virtual void resume() = 0; virtual void handleEvents() = 0; virtual void update(float _deltaTime) = 0; virtual void draw() = 0;s void* pManager; std::string name; vec2 clientSize; protected: Base_state() { /* empty constructor */ } }; } } #endif Correct me if I'm wrong (please) but of all the reasons to use polymorphism, this case is one of the better (subtyping). To be able to keep like items that are different in a common container. The derived class header would be as expected. Base class overloads in place plus specific functions and variables that would be required to make the new object behave as it will. Nothing new. I'll admit, I'm trapped in the common cycle that most online tutorials mold where the loop is divided into update / draw / check state / repeat. Is it correct? <shrug> So all this may be familiar and you hate it, or it's new and reader be cautious. The basic take away here is the stack concept. On the main loop side, we declare a Core::StateManager instance and initialize. During the loop, update and draw calls to the manager fire. I feel I don't need to list any additional modules but will list an example derived menu class. #include "menu.h" #include "../GameState.h" using namespace Core::States; void Menu::initialize() { rectPlay = { 360, 140, 440, 160 }; // 80 x 20 rectQuit = { 360, 165, 440, 185 }; // need more data or buttons are a known size } void Menu::shutdown() {} void Menu::pause() {} void Menu::resume() {} void Menu::handleEvents() {} void Menu::update(float _deltaTime) { } //template<typename ... Args> //std::string string_format(const std::string& format, Args ... args) //{ // size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; // Extra space for '\0' // std::unique_ptr<char[]> buf(new char[size]); // snprintf(buf.get(), size, format.c_str(), args ...); // return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside //} void Menu::draw() { olc::Pixel colorDefault = olc::Pixel(255, 255, 255); olc::Pixel colorHover = olc::Pixel(255, 255, 0); // _ // .--- todo : don't like handling user input inside a draw routine...fix me ----. \_(O,O)_ // V V ~ \ // ------------------- Game Menu ------------------------- Core::StateManager* manager = (StateManager*)pManager; olc::PixelGameEngine* e = manager->engine; POINT cursorPos; cursorPos.x = manager->engine->GetMouseX(); cursorPos.y = manager->engine->GetMouseY(); e->DrawRect(rectPlay.left, rectPlay.top, rectPlay.right - rectPlay.left, rectPlay.bottom - rectPlay.top); e->DrawRect(rectQuit.left, rectQuit.top, rectQuit.right - rectQuit.left, rectQuit.bottom - rectQuit.top); std::string cursorInfo = "CursorPos "; char buf[16] = ""; //string_format(cursorInfo, "Cursor Pos");// { %d, %d }", cursorPos.x, cursorPos.y); //manager->engine->DrawString(10, 20, cursorInfo); _itoa_s(int(cursorPos.x), buf, 10); e->DrawString(20, 20, std::string(buf)); _itoa_s(int(cursorPos.y), buf, 10); e->DrawString(70, 20, std::string(buf)); vec2 textOffset = { 25.f, 6.f }; int x = int(rectPlay.left + textOffset.x); int y = int(rectPlay.top + textOffset.y); // Play ------------------------------------------------- olc::Pixel textColor = colorDefault; if (::PtInRect(&rectPlay, cursorPos)) { textColor = colorHover; if(e->GetMouse(0).bPressed) manager->handleEvents(Core::eStateAction::play); } e->DrawString(x, y, "Play", textColor); // Quit -------------------------------------------------- x = int(rectQuit.left + textOffset.x); y = int(rectQuit.top + textOffset.y); textColor = colorDefault; if (::PtInRect(&rectQuit, cursorPos)) { textColor = colorHover; if(manager->engine->GetMouse(0).bPressed) { if (MessageBox(nullptr, "Are you sure you want to quit?", "Serious?", MB_YESNO) == IDYES) exit(0); } } manager->engine->DrawString(x, y, "Quit", textColor); } The game screen state would be similar but behave as what the main game play would be. Every valid screen pointer lives the life of the application but only the one at the back of the stack is active at a given time. This has served me well for adding game state transitions in custom work.
  3. This is of yet a place holder blog entry which I intend to edit as I progress. This go around I'll be using the software pixel plotter I mentioned in a previous blog entry. At this time of writing, all I have is my napkin design concept, which I think I really have something here.... you know...the whole no weapons thing...We let that simmer for a week. Hop over to the forums for some inspiration. Will my game idea cut it? Shouldn't matter. But it does you know it. So whats' happening, a partial automatic background simulation running pretty smooth and reliable. I'm testing with some debug visuals, all good. My bodies go stable, perfect..,,whoops it somewhat quickly starts to sink slowly. Slowly, at a speed that appears to be on purpose. Umm...little bug. I go find it, and stop...wait...that's actually pretty cool. I have it trigger when it completely buries itself. So, slap a feature label on it instead. Sha-bang. Now we're talking Okay that's week one. And...we're back. Week two and maybe a few. I got distracted, but didn't ignore. My little pixel got tucked in every night and thought about during the day. So, I've always thought this challenge game thing should be played slightly different. Everyone goes off to do one of their next best things, or show off this or that. In the end it's great. But what about the middle...right? <-- Here's my go at it for today. The following listing is my collision code. I'm using this goofy thing that might be worth a share. Right out of the gate, don't laugh. trying to write a little game here. Thanks, actually this is one of the 'why do you do it' things right here. Those times when math dances that dance and it's so nice to looks at. If this is one of those times, we'll see But right now the simplistic approach at its finest and I think per pixel. Check it out, I'll walk though real quick like. physicsObjs is a std::list of an abstract class. Then inheritance gives me other objects but all in the same list. So we walk it and early out if it's not active. Here we go...now expert I am not, but I want to do something cool. I choose a lite physics sim and first up is that downward force. All right, equals mc what? Telling you... truth. didn't even bother to look. I don't care. This is my game, we're doing it how I want...it's going to be banging...What's that value 9.8 something, size should effect this thing and we'll chop it into a time slice. Nice, let's build our first force direction do-dad. Umm, I appear to be short on some overloads with the framework I choose. No problem, long hand it, mix it with some outside influence and put it in a next desired holding spot. Clamp it for good measure. Now that we know how fast we want to get there, we calculate where that might put us and hold on to that. So what this is, is a circle against 2D pixel terrain. Terrain is stored on a grid larger than the screen size so we have some indexing math to contend with. I start off with a check against the grid height of the memory terrain so I don't flow into memory that's not mine and I'm scanning down. I want to look at all the pixels in the lower hemisphere of my search grid. So I build that rectangle and walk it bottom up. I assume that against terrain, my objects only care about bouncing and a bounce will never be directly above. Hence only test the bottom half. Object-object collision is a separate pass. What is important to me also is where is this bounce going to take me. So here's what I do. From the bottom center I go horizontal negative per pixel, on hit, I record the vector offsets. No big boy math. If it's terrain, take that raw offset and add it to the reflection accumulator. Found one, okay stop. move up a pixel and go again until another hit or just pass through. Repeat on the positive side. Now we have this ugly 2d vector, so I normalize and then scale it by the magnitude of what we were. Squeeze it with a cheep decay and off we go. // update physics --------------------------------------------- for (auto &obj : physicsObjs) { if (obj->bDead) continue; // apply force .................................... float gravity = 9.81f * obj->mass * fElapsedTime; vec2 force = { 0.f, 0.f }; // todo : mass / size maybe / etc.. obj->acc obj->nextVel.x += force.x; obj->nextVel.y += (gravity)+force.y; // clamp velocity ................................. if (obj->nextVel.x > 10.f) obj->nextVel.x = 10.f; if (obj->nextVel.x < -10.f) obj->nextVel.x = -10.f; if (obj->nextVel.y > 10.f) obj->nextVel.y = 10.f; if (obj->nextVel.y < -10.f) obj->nextVel.y = -10.f; // calculate desired position obj->nextPos = obj->pos + obj->nextVel; // potential positions established and next desired state set (free form) obj->bHitThisFrame = false; // reset for next run (hmmm...not sure i want or need) // check against terrain (sudo raycast) vec2 reactionAccumulator = { 0.f, 0.f }; // sum all positive hit vectors int numHits = 0; if ((obj->nextPos.y + obj->radius) < terrain.nMapHeight) { // assuming a positive downward velocity (only test lower hemisphere) int xL = int(obj->nextPos.x - obj->radius); // left index int xC = int(xL + obj->radius); // ---- center vertical ---- int xR = int(xC + obj->radius); // right index int yT = int(obj->nextPos.y); // slice center top int yB = int(yT + obj->radius); // bottom index float objR2 = obj->radius * obj->radius; // radius squared for (int i = yB; i > yT; i--) { // scanline search for terrain (bottom up) int scanlineIndex = i * terrain.nMapWidth; for (int j = xC; j > xL; j--) { // scan center to left- break on first hit if (terrain.map[scanlineIndex + j] == 1) { vec2 v = obj->pos - vec2(float(j), float(i)); if ((v.x * v.x) + (v.y * v.y) < objR2) { reactionAccumulator += v; numHits++; break; } } } for (int j = xC; j < xR; j++) { // scan right to center - break on first hit if (terrain.map[scanlineIndex + j] == 1) { vec2 v = obj->pos - vec2(float(j), float(i)); if ((v.x * v.x) + (v.y * v.y) < objR2) { reactionAccumulator += v; numHits++; break; } } } } if (numHits > 0) { vec2 unitReaction = reactionAccumulator.norm(); obj->vel = unitReaction * obj->nextVel.mag(); obj->nextVel = obj->vel * 0.94f; // decay if (numHits >= ((yB - yT - 1) * 2)) PostQuitMessage(0); numHits = 0; } obj->pos = obj->nextPos; //todo : get closet to contact point // object position wrap terrain screen if (obj->pos.x > terrain.nMapWidth) obj->pos.x -= terrain.nMapWidth; if (obj->pos.x < 0) obj->pos.x += terrain.nMapWidth; } else { obj->bDead = true; } } Okay, that was fun. Last night I shoe horned in my game state manager, adapted it to draw in this fashion with the base menu switch I use to start out with and it should be mostly game play stuff this week... I'm excited to pull out one of my real old sprite sets for this player charcter. "I'll be back" And a week old screenshot Let's do this thing...still pumped. Part two continues here.
  4. This sounds like an amazing project, I wish you all the luck with it's development. I hope you're able to help many people with the result.
  5. RoKabium Games

    ScreenShotSaturday

    Keeping up with the twitter hashtag of screen shots on Saturday!
  6. Hey hey hey! It's you again! This is happening, this is now, this is your favourite weekly update blog coming to you right now! But to be honest, this week wasn't quite as proactive as usual. There was a lot of waiting involved, so not a whole lot of things were done. However, there's still some new stuff to showcase, so let's get right to it! The Fountain First, let's get the simplest thing out of the way. I've added a new interactable prop (akin to rest areas): the fountain. This props can, like rest areas, spawn at the center of a normal room if the player is lucky. When encountered it gives the player the opportunity to drop a few coins in for smalls luck boost. However, this comes with a caveat... If the player puts too many coins in, then the fountain's motor will overheat and explode in a big way, voiding its effects and hurting the player in the process. The actual limit is actually not linked to the player's luck but is randomly picked. Will you try and get the best possible luck bonus or will you play it safe and just put a few coins in? The choice is yours... The Landfill Redesign Second, let's talk about the landfill. For those who didn't know, the landfill is a special room where the player has the opportunity to regain their previously discarded items. Previously it was quite a barebone and didn't really had any distinctive things in it. Now the landfill looks a lot more like a landfill, with garbage piles and garbage cubes filled to the brim with, well, garbage. Each discarded items lays on a compact garbage cube in the middle of the room. But that's not all! Sometimes, if the player is lucky, they can find low-quality items in those big garbage piles. Hurray for recycling! Finally, the room also has a looping fly sound (like in most cartoons and whatnot). I'm also planning for some kind of cartoonish miasma coming out of them. Pretty disgusting if you ask me... Minor Updates An exploding bomb now leaves bomb pieces behind when exploded; The shards of malls' breakable windows now got unique models; Added a metallic map to all of my shaders. Optimized, refactored and fixed shaders. Fixed a long-lasting bug with the player controllers' step snapping physics Next week Next week is going to be all about adding at least two new special rooms that I'm currently working on. There's also the redesigns that, to be honest, I didn't really work on last week. Aside from that, there's always the rest of your usual suspects like relics, capacities, enemies and items. Last week was quite a slow week too, full of waiting and more waiting. Now I'm determined to set aside the more compiling intensive work to really add some meaningful things rather than adding a small insignificant detail that takes an hour to compile...
  7. Wolf Beaumont

    Building a Team

    My name is Wolf Beaumont and I've worked on five games over the past decade. The first was a free game that I produced which we completed (SolarBASIC). The next three were designed and produced by me and they failed spectacularly for various reasons. But I learnt some great lessons from these failures. My latest game is Dragon Kingdoms, a digital card game which we are currently wrapping up development on, which has been a great relief and sense of achievement for both me and the team, for whom it is their first game. I'm looking to put a new team together, to develop prototypes and explore our more interesting results as full games. The idea is to create several small games with quick development cycles that we can easily take to market without the need for funding. By quick I mean 3-4 month pipelines. So at this stage, I'm open to any and all applications from every skillset. I'm looking to put together a highly-skilled team looking for a tight unit that is result orientated. Any revenues would be split equally amongst the team. I believe I'm a great designer and producer, but I've got plenty of failures in my past both in and out of my control. What I can say is that I'm committed and loyal. If you think you've got the skill and you're looking for a team that sounds like this, contact me on discord (I prefer real-time communication and we'd be communicating ultimately via discord anyway). Discord ID: Wolf#6791 Sincerely, Wolf P.S. If for some reason Discord doesn't work, my email is wolf.beaumont at gmail.com
  8. Today
  9. Alessandro

    Points constraint approach

    Hello, I'd like some suggestions and pointers about what approach I could take for this specific matter. I basically have a line made of n points (well, a hair): when I move one or more points, I need the other points to be constrained so that the hair length remains the same. I'm currently using verlet integration which works just fine: the only issue is that requires a 2nd step, so first, the points are moved to "unconstrained" positions; after that, the verlet integrations moves them back to the correct positions so that are constrained (and hair length remains the same). So I was wondering, there is an approach that would require 1 single step? Perhaps I could achieve the same behavior with Euler or quaternions? Thanks for any suggestion!
  10. I want to respond to a long tap on a touchpad to abort accelerated scrolling (like in Chrome the user can rest their finger(s) on the touchpad at some arbitrary time to stop long scrolling). Surprisingly this is turning out to be extremely frustrating since the touchpad isn't sending a WM_LBUTTONDOWN message separately, but only the DOWN/UP pair if the tap is short enough. In essence, it's only sending clicks, but not long presses. And it's not just my app. This web-based example isn't receiving the inputs either: https://w3c.github.io/uievents/tools/mouse-event-viewer.html What's more annoying is that for instance Chrome and Windows' own settings apps seem to be able to respond to a long tap. Here's what I've tried and concluded: - raw input doesn't discern the events either - it's not related to gestures (WM_GESTURE) - it's not related to touch (WM_TOUCH after registering) - down/up events from touchpad buttons and a dedicated mouse are received just fine - GetAsyncKeyState() for VK_LBUTTON returns false What am I missing here? Is this palm rejection*? Do I have to get the event through communicating with the driver directly? If so, how, and is there a standardized way to do it? * if the touchpad were an actual (multi)touch device, which it isn't (GetSystemMetrics(SM_DIGITIZER) reports 0), it might be possible to call RegisterTouchWindow(hwnd, TWF_WANTPALM | TWF_FINETOUCH). But this doesn't work either.
  11. Hi everybody, Since 2004, Xilvan Design building 2D & 3D games in Blitz3D, we are now showing to you our kindly official gaming related pages. - The Xilvan Design Website - (please click on each links, download games & bookmark the pages): Lights of Dreams IV: Far Above the Clouds v12.07. Candy World II: Another Golden Bones v17.57. Candy Racing Cup: The Lillians Rallies v5.07. Candy World Adventures IV: The Mirages of Starfield v9.37. Candy to the Rescue IV: The Scepter of Thunders v11.57. Candy's Space Adventures: The Messages from the Lillians v22.75. Candy's Space Mysteries II: New Mission on the earth-likes Planets v12.75. -"Lately, I fixed the colors of the ambient lights, adjusted the starlight coming from Galaxies, now the dogs may Walk, Run, Jump, Fly together, Grab bones, Pastries, Golden Bones, Hearts, Crystals, attack with freesbies." -"Now, it will be possible to edit all the levels of the game in Candy World Adventures IV v9.37. All 28 levels and 8 more in the future." -"I Want to continue Candy Racing Cup: The Lillians Rallies. I want to add more circuits, characters & cars." -"In the near future, I'm up to create a whole new Spatial Mode in Lights of Dreams V. New Space travel possibilities will be available before 2020 in our games." Once more, here is my YouTube Channel, where we are showing Candy's & Lights of Dreams series. Each games is free to play for the moment! - My Youtube Channel - Hope you'll like our games, downloads & watching our videos! We also refreshed the screenies, now they are up to date! Friendly, Xylvan, Xilvan Design.
  12. I did my dissertation on Edutainment, Gamification of Learning/Teaching, Computer assisted learning (CAL), and Serious games. What are we using as our yard stick for boring games? What audience are we looking at? and what level of engagement are we expecting? If we're talking about the K-12 market, there have been many games over the years that are 'Edutainment' that have some reasonably good engagement. The Math Blaster series by Davidson was particularly well known and has recently been modernised for the current platforms. If we're talking about adults, the focus seems more heavily on CAL where we have gamification techniques being applied to flashcard systems which is what Duolingo relies on with its badges and leader boards. I'd love to do a market study to see what people look for in their learning platforms, I would expect adults want to see a 'professional appearance' and to show 'good structure', while children want something interactive and the chance to 'blow up the baddies'. Using a Bartle style approach, i'd expect adults to be more "social/achievers" while children are likely to be more "Killer/Explorer" type players, leading to significantly different experience that needs to be built for them. I think the challenge for education games designed for adults is that the industry for this tends to focus on teaching kids, because its 'easier to show a fun game for kids to play that teaches', and that 'kids are playing games more than adults'... missing the demographic change that has happened over the last 10 years pushing up the average gamer age, up up and up.
  13. Under the GPL license, the source code is GPL, but the original assets are not. Let's develop an FPS game in which we will reuse Doom, Descent, Build, and any other engine source code we need, and release the source as required, but keep the assets proprietary. I already have a C++ OpenGL engine I worked on for 5 years (MIT license), so I can help with some of the basics such as cross-platform compatibility (on C++ level), fast sprites, sound and geometry math. Does anyone want to help me port the Doom 3 engine to Android, then develop a sector map editor for tablets?
  14. for me, one of the earlier posters summed it up nicely about being realistic with what you're trying to achieve. As a solo person, you can be the best developer in the world, but making a game is rarely about just the programming, you've got: Graphics level design sound / music QA (or getting feedback etc.) It's unlikely that any one person will have the complete set of skills necessary to do the above in addition to the coding, but it's possible. And again, as above, the forums are full of people who want to create Skyrim as a solo project and so there's a natural scepticism about solo projects. The question to ask yourself is why you're writing it; if it's for making money, then the chance of success is low. If it's a project for learning / enjoyment then you can definitely do so, it'll just take a while. From my personal experience, my game (Shameless plug - MS store) was put together over several years (not fulltime). A lot of that time was doing things that aren't my forte, e.g. the graphics rather than focusing on the parts that i wanted to focus on (programming, puzzles and the level designer). With hindsight, I would have been better off (both financially as I took 3 months off work to do it full time in the end and with a better product) getting a professional artist to draw some better graphics or to partner with someone to get the graphics done. Also, doing the parts of the game which didn't really interest me did suck the enjoyment out of creating the product. At the beginning of the project, I had plans for Spacegirl 2, 3 etc. Doing the, for me, boring parts killed my enthusiasm. The main takeaway for me is that for the next game I need to make an upfront call, and be honest with myself, as to why I'm writing it. Is it to pay the mortgage (don't do solo) or is it for fun (at which point you can pick, solo, partners or paid 3rd parties). Once you can make that decision for yourself, then go for it! HTH Steve PS If you attend the computer game conferences then you can talk to various indie developers. i asked a lot of them about how to get graphics done, the general answer was 'that's really hard, but once you find someone that you like, trust and who actually deliver the goods, then hold onto them! They're like gold dust'
  15. kristiang

    Hero Fantasy Pack Vol 2

    Entire playthrough versions of all the themes are now available on Soundcloud: https://soundcloud.com/kristiangrundstrom/hell-and-back-all-parts https://soundcloud.com/kristiangrundstrom/dawn-of-defeat-all-parts https://soundcloud.com/kristiangrundstrom/godless-all-parts https://soundcloud.com/kristiangrundstrom/where-it-ends-all-parts
  16. kristiang

    Hero Fantasy Pack Vol 1

    Entire playthrough versions of all the themes are now available on Soundcloud: https://soundcloud.com/kristiangrundstrom/disillusional-all-parts https://soundcloud.com/kristiangrundstrom/embracing-fate-all-parts https://soundcloud.com/kristiangrundstrom/in-the-midst-of-ruins-all-parts https://soundcloud.com/kristiangrundstrom/what-to-come-all-parts
  17. Thanks for the update! Only 8 months before we don't need to worry about Windows 7 anymore 😄
  18. Preface: I'm on android using C++ with the NDK. I'm upgrading some old GL ES 1.0 code to GL ES 2.0 and have two internal array buffers already. In my code I simply want to copy from one buffer to the other. Originally I bound the buffers with `GL_READ_ONLY` and `GL_WRITE_ONLY` and used glCopyBufferSubData(GLEXT_GL_COPY_READ_BUFFER, GLEXT_GL_COPY_WRITE_BUFFER, 0, 0, sizeof(Vertex) * vertexBuffer.m_size)); To copy over. This function is not available on mobile and (correct me if I'm wrong) it seems my only options are `glBufferData` and `glBufferSubData` which take pointers to arrays on the CPU to be used for drawing. How can I copy an already existing, internal buffer array to another internal destination buffer?
  19. Robert Cav Campbell

    looking for 3D rendering middleware

    Check out bs::framework and Diligent Engine https://github.com/DiligentGraphics/DiligentEngine
  20. I've also managed to test this on Windows Server 2012 R2, and it behaved correctly. One could reasonably extrapolate that this applies to Windows 8.1 as well. I've provided the repro info/code to Microsoft, we'll what happens (read; I wouldn't hold my breath). Will update this thread with the resolution if and when such a thing occurs.
  21. also I think puzzle game is a good idea because you'll be able to separate different knowledge and give players basically a reference to look up to. A lot of times merge different knowledge into one game mechanic is just unreliable, player would rather go back reading books one more time than going through a "big" game and repeating some knowledge they possibly already understand.
  22. Yesterday
  23. dilowagner

    Looking for 1-2 partners to build a game

    Hi Eugen! I think interesting idea... I`m programmer and I have a little experience with Unity and Unreal 4 Engine (C#, C++ and Blueprints). I would like to join with other partner. We can talk about this... I tried to find you in Discord channel, but i dont find it... My Discord profile is dilowagner#8874
  24. Hello everybody, my name is Eugen, I live in Germany and have about ~6 years of experience in programming (mostly Java and C#). I want to work on a game with 1-2 partnes in our freetime. I don't have any idea currently so I'm open for everything (We can brainstorm together about some ideas). It does not matter what your skills are (programmer, artist, etc..) or how much experience you have, I'm looking for somebody who is passionate about developing something as a team and willing to finish what we decide to do (learning and growing as we work on the project). Of course we will have to keep the scope of the project realistic. I plan to use git as the VCS for the project and would prefer Unity as the engine, but am open for alternatives (like for example Godot, or using a Framework). So if you are interested let me know (Discord username: Eugen#1354)! Eugen
  25. 8Observer8

    hex grid

    My favorite resource with problems: https://codewars.com/ Try to solve your first Kata.
  26. phil67rpg

    hex grid

    well I don't want to reinvent the wheel but I did post first the code I came up myself I just wanted to know how to draw a whole screen of hexes.
  27. Tom Sloper

    bug invaders

    Wish granted.
  1. Load more activity
  • 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!