Jump to content
  • Advertisement
  • entries
    24
  • comments
    69
  • views
    3285

About this blog

The journey to make game development from scratch ubiquitous and effortless on all platformsvoxyc_1029_a.thumb.jpg.62fd0cfdc27aea99269e864ea257c2b0.jpg

Entries in this blog

Looking For People To Help Work On House On The Borderland

Apparently I made some people mad by criticizing Unity. I will not do so anymore. I did not know that Unity was a religion around here. Sorry. For the past 5 years I've been working on a C++ engine. The engine is now done and I've made 3 games with it. I started working on the 4th one, and I want to base it on a classic horror novel. However, this is an ambitious project and I realized I cannot do it all by myself. Unfortunately everything I do is C++ (not Unity). And even more unfortunately, my editor works on Android. It's a real problem that I like to edit on mobile and unfortunately I cannot use Unity because it doesn't have a mobile editor. So what to do here? I got a bunch of C++ code and nobody cares because it's not Unity. Maybe I'm going to have to finish "House On The Borderland" by myself. It will take years, no doubt. I'm afraid of expressing any kind of opinion on here because apparently that's frowned upon. Just looking for some help. I was thinking of posting some tutorials. Like how to get super fast sprites, maybe. But maybe that'll get me criticized too. I'm out of ideas. What is the point of this community? How do you actually get someone to care about something? I can help your projects too. But again, unfortunately, it's all with C++ and Lua and not your beloved Unity.

VoxycDev

VoxycDev

How to stop losing players? New one-handed portrait FPS controls idea

I have 7 players and I get 3-4 installs per week, and 3-4 uninstalls per week. I keep losing players. My game probably looks cool from screenshots, but it's clear that when people download it and run it, they do not feel like it's what they expected. How to stop people from uninstalling the game? Is it more levels, more detail, more lighting effects (shadow maps, specular), or more unique mechanics that are needed? Is it because it does not look and feel exactly like an AAA title? Fateless doesn't let you look or shoot up or down. It's all on the Y plane. The general advice I took when I started was "make the kind of game you would want to play yourself" and personally I only want an FPS where you don't need to aim up and down, like in early 1990's. Should I just create a mode with vertical aim even though it's not really needed in the game just to make players comfortable? New Idea for one-handed FPS control for subway: one circle, top half is aim, bottom half is strafe. When you switch from aiming to strafing the previous action sticks. This way FPS could be played while standing and holding a pole on a daily commute. What should the feature priority be to stop losing players? Fateless on Google Play

VoxycDev

VoxycDev

House On The Borderland Details

The Engine The engine for this project, tentatively, will be Voxyc. Links to the Android editor app, Github source and existing games are on the Voxyc project page. The editor and the games it produces also run on Windows and iOS (the Visual Studio and Xcode projects are in the /platform folder of the repo). I'm open to other alternatives, but ability to edit on mobile is essential for me. Another way would be writing a mobile editor and a voxel plugin for Godot, or merging Voxyc and Godot. All buildings will be made out of voxel blocks. This allows for easy level creation. I've already blocked out the basic outline of the landscape, the house ruins and the little hamlet (the roofs should be triangular prisms, I know; they will be). You can find main.sc scene with them in the attached project (Voxyc can open this file). As @JoeJpointed out, this will also allow for the swine creatures to break into the house by taking away blocks, which sounds awesome. The characters will be animated models. I used MakeHuman to create some of them already. The first four .dae files are included in the attached project. They are not animated yet. The engine does not yet have skeletal animation, so we may resort to .obj frame animation, like in Fateless. But I'm working on skeletal animation. List of characters: Camper (player for chapter 1), Old Man (player), Tonnison, Sister, Dog, The Swine Man, My Love
Full text of the novel How To Edit And Run The Game Build On Android: Install Voxyc. Download the attached project file. Unzip the folder HouseOnTheBorderland into /Android/data/com.voxyc.voxyc/files To run the game, in Voxyc, click on File->Clear and run script->Picker and select loadch1.lua in the HouseOnTheBorderland folder. To open the main scene in the editor to edit, in Voxyc, click on File->Load Scene->Picker and select main.sc in the HouseOnTheBorderland folder. On Windows: Clone Voxyc source from the Voxyc github repo. In Visual Studio, open /platform/windows/Voxyc/Voxyc.sln. You can run the game with the following command line parameters: -m luaprogram -a <path to extracted HouseOnTheBorderland dir> -m means module and luaprogram is the module that runs lua scripts.
-a sets the main project dir. The Windows port will then automatically launch load.lua there on startup (rename loadch1.lua to load.lua). You can edit the scene by pressing Tab->Load Scene Breakdown of Voxyc C++ features Here is a brief overview of important files for the C++ codebase app/main.cpp - Entry point for desktop
app/VoxycApp.cpp - The engine core app file that runs different modules (game, editor, etc) and has the highest-level load/tick/draw functions
app/LuaProgram.cpp - The module that runs a Lua program; the game is essentially a set of Lua scripts (load.lua, tick.lua, etc)
editor/Editor.cpp - The editor; essentially one big loop with everything; needs splitting up/refactoring
engine/Engine2.cpp - The engine core; main interface into the engine; any client that uses the engine calls this class
engine/ShapeRenderer.cpp - Renders geometric shapes, terrain
engine/ModelRenderer.cpp - Renders models
engine/SpriteRenderer.cpp - Fast sprite/particle system renderer; only works on Android at the moment
engine/Voxels.cpp - The voxel memory storage and converting voxels to mesh are here
engine/TextureAtlas.cpp - Essential for the fast sprite renderer and the batcher; only works on Android
engine/Batcher.cpp - Batcher; combines voxel meshes into one big mesh to reduce draw calls; only works on Android
engine/Billboarder.cpp - Billboarder; pre-draws models as sprites for far-away rendering; does not work yet (but would be nice!)
engine/ShadowMap.cpp - Shadow map for real-time shadows; used to work on Windows and Mac OS, but currently probably broken. Essential for horror, though. Feel free to ask any questions. I figured that you guys would appreciate me finally getting specific and technical instead of whining about Unity. I really hope so and I'm trying to avoid downvotes. In case, if I'm doing something wrong, please let me know as I'm new here.   HouseOnTheBorderland.zip

VoxycDev

VoxycDev

 

First Person Catcher!

I'm starting work on a new game prototype. It will be a first person catcher (as opposed to shooter), family-friendly and re-use typical FPS mechanics, but with an opposite goal: instead of avoiding projectiles, you must catch them. Summary: a sad girl walks around a green field with pink castles and picks flowers. The world is populated by cute animals (bunnies, ponies, kittens). She throws the flowers to the animals and they reward her with fruits, candy and hearts that she has to catch to keep her happiness level up. If she cannot catch enough items in time, she gets depressed and falls asleep. Below is the first iteration of the bunny character (will be realistic and 3D eventually).

VoxycDev

VoxycDev

 

Shadowmap Artifacts

There is clearly something wrong with the images below. The shadows are not supposed to be this far away from the surfaces they are cast from. Can I correct this with bias or should I fix the scale? The shadows used to look real, but all this floating point multiplication must have got in the way. Two years ago it looked perfect. What happened with this shadowmap? https://github.com/dimitrilozovoy/Voxyc/blob/master/engine/ShadowMap.cpp https://github.com/dimitrilozovoy/Voxyc/blob/master/engine/ShapeRenderer.cpp

VoxycDev

VoxycDev

 

C++/Lua for development, but deploying to Unreal/Unity

I'm considering using my existing custom C++/Lua engine for development, but rolling out final builds to Unreal or Unity. I develop mostly on an Android tablet and the U engines can't do that, but I'd like to keep my development workflow. I simply do not have the time to fix the shadow map and develop lighting for my own engine, so I think I might just export all my levels as OBJ's and somehow transpile all my Lua to whatever language the popular engines accept. Also, since Unreal is C++, can I just write an adapter for my Lua code and keep using it as is?

VoxycDev

VoxycDev

 

3D Scrolling Shooter Prototype

This would be great for the subway crowd. The game would be playable with one hand in both portrait and landscape (like UFO Shooter). I made several mistakes with UFO shooter that this game will fix. The buildings were very detailed, but you could avoid them by just flying high. The scenery used to repeat too much because it was generated programmatically. This new game will use much lower voxel resolution, but each voxel chunk will be custom-designed. It really is a drag to have to design an endless terrain when it whizzes by so fast, so the lower resolution will help save level design time. The bendable and stretchable voxels could really shine in this game.   

VoxycDev

VoxycDev

Fateless Got a Butter-Smooth Performance Boost, Vertex Lights

Turns out that most of the frame-rate bottleneck wasn't even anything graphics-related. It was checking for screen width and height on Android on every mesh draw which is much slower than checking GLSurfaceView dimensions for aspect ratio. Vertex lighting by expanding from room center until you hit walls works well, but produces glitches, especially where voxel chunks meet. The new higher frame-rate makes the fireballs fly faster, which makes the game harder. But it now runs smoothly even on my $100 ZTE phone. What is next for Fateless? More weapons, more monsters, more levels. Get it on Google Play

VoxycDev

VoxycDev

Episode 2 is out. Need level designer / technical artist (PAID).

Another five levels are done, which make up episode 2, and that is because of the new efficient philosophy of placing enemies, spawn/exit points and doors as blocks and then spawning them as actual objects in Lua. This probably cut down level design time by a factor of 10 or more. It took a good year to design ep. 1, and ep. 2 took two weeks. I've got a full-time job now and I'm looking to hire to keep development of the game going. As @Cody.Rauh specified, I'm looking for 3 things: New guns New levels New enemies For the gun part, all you gotta do is scout websites like Turbosquid and look for free or cheap low-poly models of guns, download them, write a bit of Lua (just copy-paste existing the shotgun/machinegun/rocketlauncher code and modify it depending on weapon type). For the levels, all you gotta do is shoot a few texture photos, resize them, then doodle together a 32x32 voxel map with them in the Voxyc app. New enemies are a bit harder. You may possibly have to rig and animate them after getting the models, but at the very least open the DAE (or similar) files in Blender (or similar), go to the timeline and export an OBJ for every frame for every relevant action (move/fire/die, etc), and that sounds like the most expensive part of the process. Animation and rigging are highly skilled labor. Would love to know if anyone's interested (and to discuss rates). Get Fateless

VoxycDev

VoxycDev

 

Fateless Has 2 New Enemies, 2 New Weapons, Thanks Gray Box

Punishers now inhabit several areas of Fateless. Heavy mechs guard area 5. Good thing you now have two new weapons to help you get through all those merciless techno-alien enemies. A few days ago I remembered an old concept called the gray box. I made an area with nothing but gray concrete, and imported all the new prospective weapon and monster OBJ's into it. From that point, scripting was much faster. As soon as I was done with one model, there was no debate of what to move on to next. The queue was all right there in the gray box. I find that seeing your yet unscripted models in the same scene as the model you're currently scripting really helps the process. For example, by having the OBJ's of prospective new enemies and the new weapons all together in one gray box, you can quickly test how they all interact with one another and find out what works and what doesn't quickly (as far as hit point and damage counts do, especially). Get Fateless on Google Play

Dynamic lighting in Fateless

Dynamic lighting now works in Fateless. There are still no normals and no shadows, but hopefully this will be the necessary breakthrough to make it look from "whack" to "not that bad." Directional spotlights are the next goal. The overall mesh of the buildings and terrain should reflect the skybox, so in this case ambient light should probably be more orange. Get it on Google Play

VoxycDev

VoxycDev

Lighting Voxel Buildings With Per-Vertex Lighting

I finally found a way to light voxel buildings with per-vertex lighting that looks decent. They key is to have a RGB values for each voxel, and set them in the following way: Start from an empty point somewhere in the room Expand on all three axes as far as you can until you hit a voxel on each axis, save min/max values  Fill a rectangle box bound by min/max values on the three axes with desired RGB values This works relatively well if each corner of each voxel/quad takes the color of the voxel value to the left/lower/rear of it (on x, y and z correspondingly). Then when you go from a somewhat radical RGB value (1.0, 1.0, 1.4 in this case) to default 1.0, 1.0, 1.0 in the next voxel, you get a nice gradient due to interpolation in the shader. If bet it will look even nicer if I try to make a gradient in the RGB voxel values from top to bottom, as if the light comes from the lamps on the ceiling. Gotta try that next.

VoxycDev

VoxycDev

Rendering Foreground On Device, Background On Server

I'm interested in augmenting rendering on mobile device with a 360 video that's streamed from the server for skybox and far away objects. Objects that appear close in the game that tend to move fast, such as the weapon, nearby monsters, furniture, etc, could be rendered on-device. But far away buildings and terrain beyond a certain distance would be streamed as a 360 video rendered with much higher detail on the server. Even if there is some delay with uploading game state, that won't affect the game-play itself since the objects are far away, so a video should do. A mobile phone's power is enough to render all the fast-moving projectiles nearby that are crucial to the fight, even in VR. But what is farther out does not need to move fast, even if you move your head, it just needs to look good and create the atmosphere. Does this technology exist already? I suspect the big players are probably already working on this kind of hybrid rendering approach. Ideally, I'd like to find something open-source, C++ that I can plug into my engine. As an alternative, I'm considering Godot. Would anybody be interested in developing this as a plugin for Godot? Apologies if this already exists, just point me to the link please.

VoxycDev

VoxycDev

2D Voxel / Pixel Editor is Back

I re-implemented the old orthographic voxel / pixel editor that worked in Java 5 years ago in C++. The new editor works with both pixel art and voxel chunks, using the same file format for both. It exports pixel art as PNG's again and turns them into sprites and wall textures. As you increase the level, you go higher in whichever axis you face and vice-versa. In voxel mode, you set texture. In pixel mode, you set color. Loaded as voxels in the game, the color information turns into vertex lights. Source: https://github.com/dimitrilozovoy/Voxyc/blob/master/editor/OrthoEditor.cpp App: https://play.google.com/store/apps/details?id=com.voxyc.voxyc

VoxycDev

VoxycDev

Punisher is Making His Home in Fateless

He's a little too tall and wide to fit into the existing Fateless structures, so I put him outside. He's doing fine hanging around out and about area 2 so far. He is always equipped with some kind of rotating chaingun-type weapon, or at least one that needs cooling. So far, his mission is to make area 2 harder.

VoxycDev

VoxycDev

In-Game Purchases, Storefront Design

According to this GDC video, selling new levels is not a good idea because only a small fraction of the users ever finish the free linear content. Average paying player makes their first purchase on the 22nd play session, and it's best to keep reminding the player often about the possibility of in-game purchases. In other words, the whole game is a store of sorts where reward/annoyance is carefully managed. My original plan was to sell episodes, but now it's clear that it's best to sell weapons and upgrades, so I started on my in-game purchase experience design. According to this website, red, orange and yellow are the best colors for a storefront. Fateless world is largely orange and yellow as it is, so this made it only more convenient to make the storefronts orange and yellow. They will sell weapons, other upgrades and possibly, even tanks. Tanks are huge. I wonder what that would even look like. Maybe I should look into car dealership design? Fateless on the App Store Fateless on Google Play

VoxycDev

VoxycDev

Dynamic Lights Out, 2 Star Review In

New 2-star review is in and it's spot-on. It's been a rough weekend getting dynamic lighting ready for release, but now that it's out, not even this review could break my spirit. Here we go. "colision des not work" - It does not. It only works if any of the four corners of the object's bounding box are inside a voxel. The sliding on walls is a hack and the player gets stuck on walls and objects all the time. Anyone have a good algorithm to fix this? "aiming is only horizontal" - Yes, but I thought this was a feature, not a bug. Having to aim up and down also is frustrating, no? It has been for me. I come from an early 90's DOS gaming background, so I never thought this would be a problem. But apparently the new generation says up and down is in. "and fire button is separated from view rotation" - Unable to interpret this one at this time. Does the player want the fire button to be inside the view rotation touch surface? Tap-to-fire? I sure would love to get this fixed, just don't know how. "additionally game is fps related, so the better phone game runs faster than it should be" - This has been the bane of my existence for years now. How to stabilize the FPS on all platforms on all OS's? Android maxes out at 60 fps. Windows sometimes used to give me 4000 FPS. Definitely looking for help in this department. Well, now that I'm done responding to the harshly truthful review, I invite you to appreciate the screenshots below. Get it on Google Play

VoxycDev

VoxycDev

 

Scrolling Shooter Prototype, Waypoint System

Enemies now follow waypoints from the mesh editor. Each vertex is a waypoint now but it would be straightforward to connect them into triangles and animate them. The mesh editor now provides three orthographic views from three different angles. The prototype is now available as a sample in Voxyc.    

VoxycDev

VoxycDev

 

GPL Source, Proprietary Assets Commercial FPS

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?

VoxycDev

VoxycDev

 

Fixed Timestep Overrun

Fixed timestep works when there is nothing loading or not much going on, but as soon as I start switching scenes, the counters go out of control and curTime can never catch up with updatedTime. The editor with the grid launches with this algorithm just fine, and as I add random cubes it works as it should and things get choppy, but moving around is still fast, as it should be. When I delete the cubes, things get smooth again. But once I hit a few hundred cubes to display, the runaway scenario happens. How to prevent curTime from outrunning updatedTime? Tried making them equal, etc, to no avail. This is the code inside the tick function: long msecInterval = 1000 / targetFps; if (updatedTime == 0) updatedTime = PLAT_GetTime() - msecInterval; unsigned long curTime = PLAT_GetTime(); while (curTime - updatedTime > msecInterval) { fixedTick(); updatedTime += msecInterval; numLoops++; }    

VoxycDev

VoxycDev

Vertex lights: storing RGB in chars

I got lucky. This wasn't supposed to work so quickly. The vertex lights are functioning. Completely random and crazy and wrong, but functioning. I hear that Unreal gave up on vertex light mapping years ago. Probably for a good reason. Texture memory is cheap now. No time to integrate lightmapper and vertex lights already worked in my engine years ago. Re-adding them for version 3. How to store RGB in a char? When light hits a color, their values multiply. When light hits light, their values add. Unsigned char holds values from 0 to 255. The final value will be a float in the shader, but with what range? (-1.0, 1.0)? No, because you often want to multiply by more than 1.0. The highest I ever multiplied a light by is 3.0. So from 0 to 255, maybe range can be to 0.00 to 4.00? As in 64 = 1.0, 128 = 2.0, 196 = 3.0, 256 = 4.0? I wonder what is the most efficient way to store light values in chars so they can be multiplied as floats in the shader. What is the highest value, in practice, that a color value could be multiplied by?

VoxycDev

VoxycDev

Fateless Episode 2, New Level Editor

I found that I can create levels much faster if I just keep everything as tiles, even the object spawn points. Instead of navigating in 3D, pointing to a place and clicking "Add Model", it's much faster to just use the 2D editor to place special voxel values and then have a Lua script spawn the models into existence. For episode 2, I'm creating the levels in the 2D editor, and last night I was able to make 2 levels in a matter of minutes. Before, in 3D, it took hours for each level. These new levels are much flatter and simpler, but they are also more expansive, with room to roam and freedom to strafe around the monsters. I feel like sacrificing map detail for larger maps and increased design speed is worth it. I'd like to find out if that's true. It definitely makes the whole level design process feel much smoother. Adding the detail back in though, will be a challenge. Maybe higher-detail voxel chunks can be added sparsely in certain areas for things like staircases, buildings with windows and such. Get Fateless on Google Play

VoxycDev

VoxycDev

Character Modeling Tool: Foundations Laid

I'm working on a new character modeling tool. It will work like this: to start, there are two modes, vertex mode and triangle mode. In vertex mode, you tap on the device screen to create vertices, tap-and-drag to move them around and tap-and-drag outside the edit area to delete them (all this already works). In triangle mode, you tap on vertices to connect them into triangles, 3 at a time. In either mode, you can view the model from 3 different sides as you edit (XY, ZY, XZ) in OpenGL coordinates (this already works too). Vertices that are farther away show up darker and ones closer show up lighter, plus you'll be able to choose which vertices are visible and editable with buttons at the bottom that adjust the Z level. Ideally, eventually, it'll have skeletal animation and texture painting as well. The way I came up with the idea was I needed a way-point / flight path editor for enemies / UFO's for the new space shooter game I'm making. Then I realized that that could be expanded into a model creator and animator by adding triangle mode and so on, so I decided to combine the two goals into one. Level design could be done this way too, akin to the old sector / brush way for each prefab, then combining prefabs together into one large map. If this works well, I can see getting away from voxels as the primary design tool. Voxels just take up so much darn memory. From now on and for a while, it will be the new tool vs. figuring out how to compress the existing byte structure using bit shifting (maybe storing one voxel with texture, color and bends, in one char, etc).

VoxycDev

VoxycDev

 

Punisher, new monster introduced to Fateless

Punisher can walk, shoot and die now and he's having a heck of a time hanging around just outside area 2. The boss for episode 1 will be a mech-warrior that you will encounter in area 5. It's when you go into the underground and suddenly you enter a great hall. https://www.youtube.com/watch?v=L0OY8mZhwiY  

VoxycDev

VoxycDev

  • 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!