Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

What are you working on? (Game Making Thread)

Turned off my wifi this afternoon so I wouldn't get distracted.
Finished one attack animation and wrote out a new list of skills and abilities with different play styles in mind.
 
I actually wrote like 75% of a new post for the game script dev thign but then my browser crashed and I lost the data and then I'm like :I and haven't been doing anything for the rest of the day.
 
Xilef":1m0dzoh1 said:
Should have wrote it locally first then copied in

That only works if what you write it in makes autosaves. I suppose you'd get around browser crashes, but you'd still be subject to program and OS crashes unless the data is saved on the hard drive. Also don't use Word, because besides being very complicated and more likely to crash and taking forever to start up, I can tell you from my web development experience that copy+pasting from Word is hell on web pages. With a WYSIWYG text box at least you end up with your 200 characters of actual text and 20,000 of invisible junk that the poor web server is then forced to store.
 
ray meustrus":lmf820t3 said:
That only works if what you write it in makes autosaves. I suppose you'd get around browser crashes
I very definitely said "locally".

Using word is fine, if it crashes then something is very wrong with your machine as it isn't a software that is famous for crashing (unlike browsers that crash under heavy JS load) and HBGames doesn't support word's markup anyway so it doesn't matter if you copy/paste, if you keep within the characters of UTF8 any local edit works fine on this forum software.

I can tell you that from web development experience.

I was actually thinking of notepad when I wrote that, I do all my big posts in notepad before copying them in just in case my machine crashes (which hasn't happened since building it) and I do this because of web browsers crashing on me in the past.
 
Damnit. To plan this expansion properly, I've been playing through the game again and making note of what needs changing. What was a relatively small, but still big, expansion, has turned into a doubling of the size of the game world and everything in it. 123 new areas and counting, 10 more new enemies, a few more quests, four or five dungeons, about 15 new towns/outposts (of which a few will appear on the world map)...

Unfortunately I'm going away for a week, but otherwise, I'm updating it as I go along and then going to announce everything I've done. Hopefully can get some interest in the game again.

So uh. Plan is roughly:

- Item graphics for every weapon, and some new enemies
- Interior maps for every house in the Eastern Desert (20)
- Temporary maps for the area expansions (123, of which ~40 have been done)
- New dungeons
- New towns/outposts (graphical) (15) plus town expansions for Straupuft and co.
- New NPCs (~40, doubling the amount so far)
- New quests (~3 planned, plus possibly some more) plus rewritten old quests
- Various tweaks. New message system, new login screen, etc.

Most significantly I guess, now that I am reasonably stable money-wise, the game is not going to be commercially oriented at all, I don't think. Unless something dreadful happened. Everything available for everyone. The game's a loss maker but that doesn't matter.

New areas will include:

- The "Darker Forest", an expansion of the Dark Forest through the Earth cave dungeon.
- The Ice Forest, an expansion of the snow fields.
- The Jungle, leading on from the Ice Forest.
- Far Southern Desert, through a dungeon.
- North Steppe, through a new Wind caves dungeon.
- Pirate's Cove.
- Various separatist castles and outposts.
 
Just passed my driving test and now I'm working on improving my input system.
It now fully supports xbox gamepads and other joysticks (Up to 4 of them, I plan a local multiplayer thing), next up is hooking up "things" in my map format with the game engine, I am using RPG Maker's event editor to get an idea of how to set up the scripting with the things, in the map editor I'll probably have fields for autorun, parallel-process, player-touch, event-touch and proximity where scriptlets can be inserted (So you can call a function of the map's script or you can write a small function in the map editor).

With proximity I'll use that to code the action button, so when within a certain distance it runs the script constantly that checks for player input, rather than check for player input and then run script. This is an optimisation so I only have to check the distance of objects that are in the same sector or in the bneighbouring-sector to the player, that way I'm not looping over every object checking for distance AND player input.

I can probably even combine player-touch and event-touch into proximity but I am not too sure on how that would work as of yet.

The map itself can have script triggering walls and sectors (So action button/cross a wall, enter/exit/inside a sector).
 
Xilef":3ptvjg1q said:
Using word is fine, if it crashes then something is very wrong with your machine as it isn't a software that is famous for crashing (unlike browsers that crash under heavy JS load) and HBGames doesn't support word's markup anyway so it doesn't matter if you copy/paste, if you keep within the characters of UTF8 any local edit works fine on this forum software.

Very true that browser crashes are more likely. I guess I just haven't experienced that many lately because I haven't been on forums much lately. But it bears mentioning that while you won't encounter UTF-8 problems with Notepad, you will if you copy-paste from Word anything that even has quotation marks, let alone em dashes (–, often replaces "--" in Word) or other cp1352-specific characters.

Um, to get back on topic...for some reason I totally stopped doing productive things about the time I said here I was working on the Inquisitor tilesets. Got to get back on that. I saw this post in Mapping Improvement and it reminded me of a number of things I want to do, namely redraw and recolor the roof tiles, extend roofs beyond the edges of houses, figure out how to really make far-side roofs work because they do make houses look better in this style, redraw and reorganize the grass patterns, rework the fences, build a proper bridge style for ground-level water, comprehensively reworking water patterns, and drawing new trees. It's dizzying how much work I can figure out and I'm stuck in the middle of redrawing the circular castle towers and re-proportioning the stairs. There's less work to be done on the world map set but I feel stalled with reworking the roads; I can't quite get the transparencies to work right so it looks natural on top of every ground tile. But I did integrate all of the buildings with lots of new stuff including mining towns, snowy towers, farm houses, and far-east buildings (many of these additions were from Inq himself but hadn't been made easily available). And the indoors set is probably going to be fairly easy to redraw because I've already reorganized and recolored most of it for the ship tileset I'm doing as well as ground tiles expanded and organized for the outdoors; all that remains is all the walls and rafters and of course re-proportioning the chairs. And oy, I still need to decide exactly how big the doors are going to be.

And when I'm done with that, I need to finish my Tilemap script for Unity, cut up these tilesets into square textures, script a new map system in Unity, and start mapping. I'll probably want to also code an export mechanism so I can do my mapping in Unity to show off all my new pixels. Either that or just use RMXP and treat the example maps as something just for fun.

I'm not much into VX Ace and I just downloaded a trial recently. Could anybody tell me if VX Ace fixed the really quite disastrous tileset limitations in RMVX, and if so how? I really liked having three layers in RMXP but even that wasn't always enough. Having only three layers was part of why I started moving to Unity, where I can design my own Tilemap editor with unlimited layers that should be trivial to transform into retro-looking 3D just by shifting the camera parameters.

SO....MUCH....STUFF....!
 
Got the whole weekend to myself. I'm really excited. I got a folder full of all the W.I.P battler sheets that I'll be moving over to a finished folder. Some of them are super close to being finished while others I want to redo completely because I started them 2 years ago and haven't touched them since. Here's something I'm almost done with. The Sentinel Class.
old and new
 
I like the shading better on the old one and the pose feels more dynamic, but you've definitely gotten better at animating your sprites. The old one looks like it's doing the disco.
 
I actually prefer the shading on the second one, the first one seems over-bright.


Back to writing my "things" class, trying to figure out how it will extend from existing base classes right now...
 
Ugh. I finished a couple sheets today that were only missing a few frames; and made small adjustments. I told myself I'd try to finish another sheet tonight but I ended up fussing with a pose for to long and basically didn't get anywhere with it. It's hard to keep going when you get stuck like that. I don't feel accomplished yet since I should have had all of this done forever and a year ago. Tomorrow's goal is 3 sprite sheets.

Edit: Thunderstorm rolling through. Paranoid the worst could happen. Backed up work on a usb and unplugging my laptop just in case.
 
Today I managed to test out my idea about a job-list based parallel processing class, when I got home I actually implemented it.

The idea is simple, there is a static class (C++ namespace) called xiJobManager, the job manager has a ring of jobs and every time you prepare a job it gets placed on the manager's ring, if the slot at that time happens to be taken up by a job that hasn't been processed yet, that job is deleted and replaced with the new job (As this is for games, it is expected that any out of date information about the game world will be updated in a few milliseconds time anyway).

When the manager is created, it spawns 4 xiWorkerThreads that constantly check the manager's job ring for any new jobs, they each check the ring at almost random positions.
Each thread increments the cursor on the ring, the idea is that once it takes a job, that cursor position has it's job removed so either the next new job is placed there or the cursor is moved when the next thread checks for jobs, this way the newest jobs will ALWAYS be placed at the end of the list, the only negative is the empty cursor positions that get cycled.

To add a job it's simply PrepareJob( functionPointer, functionArgumentPointer, functionReturnPointer ), all of which are optional params, so it even supports getting the results of the call.

I did some tests, and sadly the constant running of the 4 threads is a bottleneck itself, but at the moment I don't have any intense processing beyond movement, so I expect that the benefits of this will shine through when I have collision detection, path finding and AI running in the game world.

I have also made it sort-of configurable, so I default the engine to 4 worker threads (I will probably reduce this to 1 in the future) and you can recreate the job manager at any time with more threads, when you drop the job manager it finishes all tasks before moving the workers onto the main thread and cleaning memory, so I can have a setting in my game's option menu where you can tweak how many cores you want the engine to run on.

This stuff would be brilliant on high-core machines, on my desktop there is good speed up going from 1 core to 4 cores, 4 cores being faster than 1 (0 cores is the fastest due to that bottleneck I mentioned), at 5+ cores my machine starts to chug with the work load (My machine is quad-core with 8 threads, so at 5+ it starts using 1 physical core with 2 threads which isn't good for the high-speed game world that they run in).

I expect that 8 core PCs will benefit a lot from this kind of code when they eventually appear in mass-market, it also prepares my engine for possible console ports which is good.

This also helps a LOT with high-resolution user input, my mouse suddenly felt massively responsive with the input code happening on another thread.
 

Azo

Member

what am i working on?
a game. I call "Augmented Realities"
I wonder if i'll be sucessful in blending fantasy with sci-fi...
 
Crunch time. Helping getting a Demo ready for this weekend. I don't want to belittle what sillypieman can do by himself but he doesn't do the best job playtesting his own work.
 
@Xilef: Have you considered using the Observer pattern for your threads? What I'm thinking is that each thread be initialized in a suspended state and each time a new job is submitted, your ring manager checks for any suspended threads and assigns the job to one of those threads immediately. If it doesn't find any suspended threads, the job waits. Whenever a thread finishes a job, it looks once for pending jobs. If it finds one, it does that one immediately. If it doesn't, the thread suspends itself. This way your threads aren't constantly polling for new jobs and I suspect it will reduce your overhead.

Something else to consider for future proofing is if there's any way you can check how many processor cores are available and base the size of your thread pool on that.
 
I'm going to have it detect how many threads the CPU supports and reserve half of them, leaving it up to the user to change game settings to support more or less threads.

I'm actually going to go for an old approach that I already have where threads sleep until the job manager tells them there's jobs to be done, so they churn through the jobs and then go back to sleep.

The pattern will be AddJobs()->SubmitJobs()->DoMainThread()->WaitForJobsToFinish() with submit jobs waking up the worker threads and wait for jobs to finish pausing until they are all done, this stops the problem of adding jobs and having to use mutexes to pull jobs to avoid clashing with one that's just been added.
 
*Breath in*... *Breath out*
I've done what I can for the LA2 demo. I'm getting sick of testplaying it. Still have a lot of work to do for the finished product. Now that I don't have a deadline hanging over me I can relax a little.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top