Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411507 Posts in 69374 Topics- by 58429 Members - Latest Member: Alternalo

April 26, 2024, 02:48:45 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsIsomites (Working Title) - Village Management Sim
Pages: [1]
Print
Author Topic: Isomites (Working Title) - Village Management Sim  (Read 6325 times)
Iso
Level 0
***



View Profile
« on: September 20, 2013, 12:37:26 PM »

What is it?
-------------------------------------------

Isomites is a dream idea I've had for a few years, that I believe I can finally make a start on. It takes a lot of inspiration from Minecraft, Dwarf Fortress, Settlers, The Nations, Caesar, Pharaoh, Theme Hospital, etc.

The general idea will be that the player manages a large population of civilians through indirect commands, so rather than selecting a unit and telling it where to go, the player will instead issue a 'job' that the AI will then carry out by themselves. I plan for the AI to do as much as they can, by themselves.

One of the main driving forces was spending a few months a couple of years ago building a Minecraft village, only to realise it was missing something: life. I'd love to be able to recreate the cities/towns you see people create, only the buildings will actually be lived in.

The prototype has always been called Isomites as it was originally an 2.5D Isometric game and "mites" seemed like a good word for having lots of small AI units. However, the project has since evolved to 3D, due to the various headaches caused by 2.5D. I like the name too much to really change it now...

There are various images of that old prototype here, some are just general dev shots, whilst others highlight the issues to do with depth sorting (the main source of the swap to 3D): http://imgur.com/a/EjQqq


Initial 2012 3D Prototype
-------------------------------------------

The follow section and first few replies are from my first real attempt at this, it was originally done with XNA (right before Microsoft dropped it).

Performance enhancing from segmentation, use of vertex buffers and frustum culling:




Minecraft style block placement (though this will one day evolve to the AI doing it):




Entity Picking:



Basic A* Path finding (see next gif)

Basics to the Job system (demonstration of a 'Move' job):



(Yeah, they carry stuff on their head and can pick up trees)

Contact
-------------------------------------------

PM me here, leave a reply or email [email protected]
« Last Edit: October 23, 2015, 02:13:17 AM by Iso » Logged

Iso
Level 0
***



View Profile
« Reply #1 on: September 21, 2013, 02:57:40 AM »

Saturday is usually a productive day for me as I have the house to myself for most of the day. However, with the release of GTA V, it's kind of cut development time >_>


I will work on it later today, most likely on improving the job system.

I've also found some uh, 'features', with doing everything under an Entity system:

Feature 1, AI can pick itself up to boost itself in to infinity:




Feature 2, AI can pick up other AI:

Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #2 on: September 21, 2013, 12:14:18 PM »

I've never been drawn to strategy games but your take on it interests me. I always thought that clicking and telling units to do things directly kind of a waste of time. So much that experienced strategy gamers measure their skill with commands per seconds.

Actually, I'm loving your idea! please keep working on it :D I know how hard it is to start working on that magical pet idea, we fear we won't do it justice and the project dies. I've had my share of that.
Logged

Iso
Level 0
***



View Profile
« Reply #3 on: September 21, 2013, 12:49:29 PM »

I've never been drawn to strategy games but your take on it interests me. I always thought that clicking and telling units to do things directly kind of a waste of time. So much that experienced strategy gamers measure their skill with commands per seconds.

Yeah, the main problem I have with RTS games is that I get totally lost in making sure everyone has a task. I am terrible at competitive AoE and StarCraft, despite being a solid gamer my entire life. I'd much rather build the base and watch it grow. So I prefer games like Anno and Tropico, where the management is on a 'higher' level, only the issue I have with them is they get boring pretty quick due to the lack of imagination/creativity the player can use, which is why I plan to let the players design buildings in a Minecraft style fashion.

I'm trying to keep the engine very efficient as I don't want it to succumb to FPS death like Dwarf Fortress does as around 150-200 units. I've tested with thousands and it works fine at the moment but then again it's currently not very complex (Edit: Retested and there are some bottlenecks with various tasks, if all 2000 AI try to do it at once...).

I will try my hardest to keep this project alive. I have been trying to get it off the ground for nearly a year (since the original 2D attempt) and it finally feels ready/solid. The entity/component system approach has just streamlined the work and lowered the code requirement massively.

Sorry I tend to ramble, this is the only place I currently outlet about the project.

Edit (to avoid double post): Haven't been too productive tonight. I've fixed various bugs and added some new components. The new Harvest component and Harvest job allows the AI to process one entity in to another. Here's a gif of randomly assigning trees to cut down, then requesting the logs be moved closer:

« Last Edit: September 22, 2013, 12:23:43 PM by Iso » Logged

Iso
Level 0
***



View Profile
« Reply #4 on: September 22, 2013, 06:24:49 AM »

It has taken me hours to get this very simple shader to work. I have never written a shader before so hey, it's not too bad, at least I'm learning.

Demonstrating highlighting, selecting and deselecting:



Edit: Forgot that I fixed the path finding so it dynamically updates should their path be obstructed/removed. For e.g. in this gif if I remove the floor the AI was using, he repaths round the more complicated way.




Another Edit to avoid double post: Added Storeable and Container components. Storeables can be put inside Containers, as demonstrated, logs are currently the only storeable, whilst Work Benches are the containers:




Up next will be crafting. Now the work bench exists and can be used as a container, its contents will need to be processed. However, this will require a fair bit of work to implement an automated crafting system.

One more edit: Trees are no longer carryable, a new Component has replaced the crappy old mechanic for carrying objects, so now only Logs can be carried.
« Last Edit: September 22, 2013, 12:22:07 PM by Iso » Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #5 on: September 22, 2013, 02:40:52 PM »

I like the idea of indirect interaction. I had a similar idea a few years back, where the player would manage a colony of settlers but couldn't give explicit instructions to them. The way I approached it was to have a mechanic I called 'Focus'. Clicking on a region of the world (a tree, a chasm, a flock of birds) would tell the settlers to take an interest in that thing. Over time the settlers would figure out what to do with that focussed thing, depending on existing improvements. So focussing a tree might cause a settler to climb it and pick fruit off it, but if you have a lumber mill then focussing would chop it down (if you were low on wood). No idea if this would make for a fun experience at all. Smiley

Anyways, good luck with this project. I love the tile-based movement and the way they carry things. You show the item when people are carrying things, so why not show it when it's in an inventory? You could just have a pit next to the workbench, where things are piled up in a number of piles. I think that would be more consistent with the style. I always loved in that game, The Settlers, how you could see all the resources travelling around the map, getting put in piles and collected, etc.


I think you should show all the items in an inventory -- maybe your creatures store things in big piles?



Logged

Iso
Level 0
***



View Profile
« Reply #6 on: September 23, 2013, 12:03:10 AM »

Anyways, good luck with this project. I love the tile-based movement and the way they carry things. You show the item when people are carrying things, so why not show it when it's in an inventory?

You're absolutely right that I should be. One of my main gripes with DF was the obstruction of visible items. When items were being carried or when they existed inside workshops, they were invisible most of the time. Which meant not only could you not see the item, you also couldn't tell what the Dwarf was doing from a glance.

The reason they disappear in to the work bench is because I wanted them to be stored with the work bench before they can be used to craft with. I did originally want to show all the items on the workbench itself, but the bench is only 2 tiles wide, whilst most items are 1 tile wide.

It also brings up the question of what to do when moving multi-tile items like the work bench. I have 3 ideas:

A) Construct it at the location it should be built
B) Scale it to 1 tile big when carrying
C) Put larger/complex items inside crates (1 tile in size). These must then be 'unpacked' at the location.

C reminds me of Startopia, which also gives me an idea on how to handle storing items: Using some kind of cargo-hold / shelving system. A work bench could have shelves attached to it that the items get placed on. That way the items are always visible and even hints at what they're crafting from a glance.

I might add Storage Racks (2x2x2 - holds 8 items) as containers, instead of fitting infinite items inside magic containers. Only problem I see with this is storage is going to take up a lot of physical space... Which I guess could be seen as a plus as it means "Warehouses" could be designed by the player. I wanted to avoid the Dwarf Fortress approach of just assigning grounds tiles as "stockpiles", mainly as I've never seen people just store everything on the floor and then run all over it Tongue
« Last Edit: September 25, 2013, 12:53:39 AM by Iso » Logged

motorherp
Level 3
***



View Profile
« Reply #7 on: September 23, 2013, 02:17:45 AM »

You could do with adding some shadows since at the moment its very hard to get a feel for the height of your different tiles where there's elevation changes.  Also I find it hard to figure out the 3D location of your objects like trees and work benches since they kinda look like they're just hovering in mid-air.  Something else that might help with this is to colour code by height, so for example your grass could get lighter and more yellow the higher the tile is.
Logged
Iso
Level 0
***



View Profile
« Reply #8 on: September 23, 2013, 02:33:18 AM »

You could do with adding some shadows since at the moment its very hard to get a feel for the height of your different tiles where there's elevation changes.  Also I find it hard to figure out the 3D location of your objects like trees and work benches since they kinda look like they're just hovering in mid-air.  Something else that might help with this is to colour code by height, so for example your grass could get lighter and more yellow the higher the tile is.

I wholeheartedly agree with both points, once you play it enough, you start to get used to the effect and understand where things are - so I must not forget it wasn't always immediately obvious. I'm well aware of this problem as it was 10x worse in 2.5D.

Cubes already do get lighter the higher they go, it's just very subtle (see the block placing gif in the original post). I've tried and failed to implement shadows, I can grab a screenshot of an early shadow test build later to see if anyone understands why it went so wrong.

Another graphical feature that would really help is Ambient Occlusion. Minecraft fakes it by calculating a value based on the surrounding cubes and sends it to the shader. That's fine and dandy when everything is a cube, but that's not going to be the case here. I tried to follow a tutorial for SSAO but I couldn't even get anything but a black screen.

I'm very new to 3D so things like these techniques and shaders still go right over my head.
Logged

K1lo
Level 1
*



View Profile WWW
« Reply #9 on: September 23, 2013, 06:06:21 AM »

I've been working on a similarish project for over a year now so naturally I'm really excited to see someone else doing something in a kind of Isometric format! Keep up the good work  Hand Thumbs Up Left
Logged

Iso
Level 0
***



View Profile
« Reply #10 on: September 26, 2013, 10:45:43 AM »

These took longer to implement that I hoped, and I also came across various design flaws (already :D). I guess that's why this is a prototype.


Item previews + visual feedback of where you can place objects:




So now there's an area that highlights where it will place, if it's red, you can't move it! As you can see, Work Benches are now not placeable... I wonder why?



There's a new storage component, that now has "slots" with set positions, so stored items are visible. This is basically a table with 4 slots under it and 4 slots above it:




If it has space, the item is previewed to where it will go, as you may be able to see, the slot is taken before the item gets there to avoid placing two items on the same location. AI's interaction/pathfinding has been update so they can reach items 1 level above too.

But what's in the box?

As inspired by Startopia, I thought about putting furniture in boxes so they still took up 1 unit for storage/carrying consistency and get unpacked at the location:




As you can see, the placeing code works with any sized object. I'm having trouble with my transparent objects not ordering correctly though (as you can see on large item previews).


So that's the progress for the last few days. I really need to get on some kind of visual improvements, such as AO and shadows. I've tried and failed again =/ I'm also starting to get unhappy with my terrible 3D Modelling skills as it takes me a long time to make something crappy Tongue Oh well, it's slow but I'm learning.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #11 on: September 26, 2013, 05:49:40 PM »

What trouble are you having with SSAO? Have you tried breaking apart the problem by first rendering the depth texture to screen to check that it looks ok, and then rendering the SSAO processed version of the depth texture, and then rendering everything composited together?
Logged

Iso
Level 0
***



View Profile
« Reply #12 on: September 27, 2013, 12:31:57 AM »

What trouble are you having with SSAO? Have you tried breaking apart the problem by first rendering the depth texture to screen to check that it looks ok, and then rendering the SSAO processed version of the depth texture, and then rendering everything composited together?

I never even got the depth buffer to draw. XNA is annoying in that you can't just ask the GPU for the Depth Buffer (not sure if you can with a more direct approach?) so I have to render it to a "RenderTarget", which means I have to draw the entire scene twice but using a Depth Pixel Shader (which I don't have) rather than a texture shader.

Tomorrow, I'll be trying to follow a tutorial I found. As I got the unpacking/preview code 'working', I'm light on planned work for this weekend. Hopefully I can get it all working. I'm worried about the performance hit though as currently I can be anywhere from 1500 FPS to 5FPS depening on the number of entities on screen. I need to sort out batch rendering by model too =/ 3D is a lot harder than I thought and I already thought it was pretty hard Tongue.

Edit: Already lost on where to go with this -_- Thinking about making it Space Themed (I can't get over thinking about Startopia, maybe I should just replay it) and having robots do all the hard work. I'm also not a huge fan of teleporting tile by tile to move and may smooth it out. The 3D requirements are killing this already for me, I just wish I knew more and knew how to model.

Contemplating jumping ship to Unity and just use all their fancy built in lighting and shaders. Last time I used Unity, I gave up  because it wasn't 'codey' enough for me.
« Last Edit: September 27, 2013, 06:54:52 AM by Iso » Logged

K1lo
Level 1
*



View Profile WWW
« Reply #13 on: September 27, 2013, 11:53:25 AM »

In Isomer for the longest time units would 'jump' from tile to tile, it was ok as it simplified the code but presented a few niggly issues I hadn't expected. Plus it felt 'wrong' as to get someone out of enemy fire would involve them standing still for a few moments during which time they carried on taking damage from weapon blasts. It was just irritating, felt cumbersome and plain didn't work as well as I was hoping. Here's a really really old GIF showing how it used to look:


A couple of months back I rewrote the movement code from scratch to have smooth motion between tiles and it felt a lot more fluid. For a game like Isomer it really made all the difference. There are lots of little things you have to think about like:

  • Can you 'tick' the units fast enough to update their postion and offset within 2D tile calculations fast enough, or do you interpolate on demand
  • What happens if a movement order is cancelled (this was an issue for me but may not be for your game due to the different way you issue orders)
  • What happens if a movement is suddenly blocked mid-motion
  • How to update your hitboxes, collision and lighting updates
  • And probably a few others I've already forgotten about

Not all isometric games will require smooth motion though so don't get too caught up feeling like you have to implement it. Look at DwarfCorp and Gnomoria for example. Both these games do a good job on motion of units but don't have (or I'd say need) smooth motion.
Logged

Iso
Level 0
***



View Profile
« Reply #14 on: October 03, 2013, 02:06:01 AM »

Scope grew, scope shrank, scope grew again, spent time since last update in Unity contemplating what I wanted, nearly dropped project, did drop project, picked project back up, now lost again. Coming back to this topic and seeing the gifs I posted made me smile, as I have quite a bit working that I forgot about.

Ugh.

The only reason I went to Unity was because it handled lighting/other 3D stuff. Though somehow after a week I ended up with a puzzle FPS, so I don't exactly have much focus right now.

My main problem is 3D assets and techniques, I just can't do them. I wish models/shaders just fell in my lap so I could focus on the code.

This is more of a moan than an update, just to get it off my head.

Logged

Noogai03
Level 6
*


WHOOPWHOOPWHOOPWHOOP


View Profile WWW
« Reply #15 on: December 22, 2013, 01:08:22 AM »

A REALLY easy way to help with depth in isometric worlds is to add a drop shadows:



In #1 it's confusing - the leftmost figure is jumping in the air and so is raised. The next one is not jumping but further back, and they look very similar in position. The third is on the ground.

#2 adds drop shadows: it's much more obvious who is where (they are in the same positions as above)
Logged

So long and thanks for all the pi
Iso
Level 0
***



View Profile
« Reply #16 on: October 23, 2015, 02:07:51 AM »

I probably shouldn't be posting here yet, as there's a lot I wanted to do before I did... But I'm maybe kinda back??? It's been two years since I 'dropped' this out of frustration at my incompetence and the fact Microsoft dropped XNA.

A lot has changed. I'm no longer just winging together Tutorials in XNA like I was before. Namely:

- I actually know how to model, unwrap and digitally paint now (Pictured art is NOT mine however). I'm not the best but I will actually be able to prototype with it
- I can also rig and animate (again enough to just protoype)
- I can write shaders now, well kind of. I mainly use GUI workflows for them and tweak the result...
- I actually understand the rendering process and pipeline now!
- I've studied/used PBR and plan to use that
- I've spent the last 1-2 years working with Unity, so I'm very comfortable in the engine
- I've learnt a lot about programming
- I actually know how to work threads/async programming properly
- I've written/am writing a core library I maintain and reuse (A*, threaded tasks workers, event aggregation, behaviour trees, and more)

All of the above has gone in to a new redesigned version of Isomites... Details are still to be fleshed out as I am just playing with ideas again.

- It's no longer Voxels. I never wanted it to be in the first place really.
- Buildings will be more akin to the Sims, with walls taking up the EDGES of a cell, not the cell itself. I only have walls in place at the moment... Still need to figure out floors/roofs/ceilings/etc.
- Movement is now smoothed and animated over time, not teleporting along on a grid.
- Pathfinding is now threaded
- Behaviour Trees are in place, though nothing that complex at the moment. The basis are there for getting about and claiming resources.
- The style has been refined, it will most likely be a low poly, digitally painted, slightly cartoony in effects. This is mainly as I really like the style, can do it partially myself and it's somewhat resource friendly.

Here's a sneak peek of the "Pack" idea I had before, about putting items in Crates. The AI was simply told "Pack an Entity" and the behaviour tree took care of the rest. There's no behaviours in place for Packed items yet, so he just walks off.

Disclaimer: Lots is subject to change! http://i.imgur.com/VZWEwfa.gifv

Rather than have boring/realistic/hard to animate animations of putting things in a crate. I've borrowed Animal Crossings idea of just having wobbly shrink/grow effects with smoke puffs.

« Last Edit: October 23, 2015, 02:38:52 AM by Iso » Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic