Showing posts with label gamedev citizen. Show all posts
Showing posts with label gamedev citizen. Show all posts

Thursday, September 11, 2025

CITIZEN: Overwhelming

 2D can be a big responsibilty.

I'm finding it hard to manage large scenes, but then I have to appreciate that all this hard work.

The residential area is big, but I didn't realise the implications until I started cropping them. The workflow is that I must frame the entire environment in one camera view. I render off the image and then I subsequently crop them. The cropping process adds a metadata file that indicates the cropped images original position in the entire camera's canvas.

This process had worked fine for small and medium scenes. But in large scenes, the cropping process takes a bit of time.

This is compounded by the large number of elements that the scene is comprised of. My near-future worry is that I have to revise the look and the naming of the objects, and add/remove elements accordingly.

I think I have to step back, and instead of examining my workflow, I think I have to examine myself first.

There's a certain impatience that is creeping along my spine. I think that waiting for renders, or an automated cropping process is a good thing. It's also ok to make mistakes in the workflow or in the pipeline and revise it.

I don't have solid plans on how to tackle this, but given my moving targets, both game scope and unknown aesthetics, this  should not be a surprise to me. But I should calm down, and be patient, and take in things more deliberately and carefully.

It is easy enough to say, but when I'm faced with questions of what I should do now, I often don't have any answers.

I want to redo the residential area again because I feel it's too big. That's fine.

But I also want to try to learn something from this, to see whether my Krita pipeline actually works. Again, I'm working on a scene that might be a throwaway, part of yet another 'prototype'; an unending series of tests.

One of the big things I'm trying to work out is the new Krita workflow in aid of sorting and final placement of the art before it goes into Godot. This replaces what Tiled Editor did for my older Construct 2 workflow.

I am utilising my own kind of sprite sorting, which allows me to sort my moving characters on sprites that are arbitrarily sized and don't sit squarely on isometric tiles. I call this sorting collision-based sprite sorting because I use collisions to detect whether something should be in front or behind.

This method has many advantages, but its main problem is the need to manually sort the sprites themelves according to how they might be layered in a composite. The method of how I sort those elements is one of the problems that have been plaguing me for months. IfI had made bigger scenes earlier I would have spotted the problem, since the techniques I had b een using were not actually scalable.

In the last iteration of the sorting workflow, I was sorting in Maya, and what tedium it was. The sorting workflow requires me to group meshes that could be treated as a single element that any moving character could be composited over or behind.

After this step, I parented elements to others depending on their sort relationship. The children were the ones in front of the parents.

This worked, but the process was extremely tedious. However, the main issue was that it was error prone. Trying to correct a mistake took more time than if you were to do it correctly the first time, and I was disheartened by this because I realised it wasn't a very good idea to begin with.

I explored other ideas within Maya, including dragging objects within the Outliner to denote their order, and then running a script that lets their position in the Outliner drive a custom z-index attribute. This attribute would get exported as a metadata file along with the EOBJ, and it would be passed throughout the pipe until the game engine.

The metadata itself is useful because it is the DCC that dictates the z-index. But the process in Maya was prone to error, and slow.

What I wanted, actually, was a 2D application, like Tiled Editor, to author my scene from 3D renders, and get that into Godot. Tiled Editor, however, was not fit for purpose. In the first place, it wasn't very good at selecting images based on cursor on pixel. Selecting an image by touching its pixel was the top thingI needed a 2D image application to do because my rendered images were of varying sizes and shapes.

I looked at other applications such as Affinity Photo, but its lack of scripting made it useless for my special requirements. Then I remembered Krita had a Python API. Soon, I installed it and started writing a few test scripts to see whether things could work.

After playing around with it for a week, I felt that, with some serious development work, Krita could fill in the role of Tiled Editor. Krita could be used to assemble not only rendered images, but any image I want to put in, and then export the layout and all the needed metadata for Godot consumption.

But even with that promising addition to the pipeline, I still feel bogged down by the 3D bit mainly because there's so much at stake at the first go; revisions seems hard to carry over to the final image.

Part of the problem is the naming; when I 'sketch model' the scene, my names are generic, like 'group', or 'cube', etc. When those are exported they are named as such and they go into LW and registered into Janus as those names. But if i want to change the names (even if I don't change the geometry), the LW side would need to clean up the newly non-existent object that is now represented by another name.

The revision workflow isn't as flexible as I wished it would be. But this is where my old school sentiments are clashing: in times past, not everyone had the shiniest tools, or the best way to do things. I feel like I need to show myself I can do a project smoothly, without kinks, without bends, without hurting too much. You know what I mean?

I think the tools I have are actually sufficient, and if I have problems, I should 1.) reduce complexity, or 2.) live up to my own aspirations.

By the way. grid crop took 51 mins! I should reduce the scene size.


Monday, August 25, 2025

CITIZEN: I'm adding height

 I'd been more than a little hesitant to model anything past head height.

At the very beginning of this last rethink, I brought the setting to the underground because I could naturally control the depiction of height.

My problem began when I decided that I were going to make scenes reasonably tight. It wasn't going to be a wide open city, but a claustrophobic one. Corridors were going to be narrow. However, a fixed isometric viewpoint makes it more difficult to see the ground if the walls rose any higher than the nominal height of characters.

Of course, there were ways to show character behind walls without actually messing about with their visibilities.  But if walls rise too much, you lose all sense of where the ground is if you don't start making tall elements invisible.  Visibility handling is a potentially complicated feature (i.e. source of bugs) and I was all for avoiding complicated features if I could help it. Strangely though -- I didn't actually think about this before -- I had already a working solution for handling this in Godot. I think I had it in my mind that I wasn't entirely sure that I could apply the technique reliably on a more complicated environment especially since my test scene was a simple SubRail car.

In any case, my obstinacy was butting heads with my own aesthetics.

In the first place, when everything is head height, it looks pretty flat.

Again, I had justified this by saying that they're all underground, and I'm trying for a claustrophobic angle. But the flatness is working against it. It may or may not look underground, it may or may not look dense, but it's flat and boring.

I went back to the starting point which was the entrance to the apartments. The apartments were supposed to be a building (or a group of them). I had forbidden myself to depict the building for reasons aforesaid, so it was going to be shown as a short building whose top will be black.

I thought, 'maybe that'd be enough'. But as I went through the rest of the map nothing felt right. The map looked stupid, everything seem uninspired even though I was wracking my brains on making interesting floor and room layouts. But I couldn't even figure out what these rooms were! There was nothing exterior that indicated what the interior might be.

I was feeling desperate to make it work. But I did not question the height of structures because that had been a technical consideration on my part and I had it written it off.

I told myself that I wanted to see some life, some dimesionality when I'm looking at the map. I want to see buildings; I want to see their facades and I want to imagine what may be inside the buildings even if I can't possibly enter them.

So I started depicting taller structures. I started with the apartment.

And then I went all over town with the other bits.

I found the new map visually more interesting, but more importantly, I could start imagining what each building could be. I started having a little fun, and getting funny random ideas.

In any case, I re-learned a lesson: I have to nurture or encourage inspiration whilst working. I had a technical consideration, and I held inspiration subordinate to it. If I take the fun out of making a map -- I did so when I imposed all structures be head height -- it's certainly not going to be a good map.

It wasn't totally unreasonable for me to be a bit cautious of technical problems. But I think I consider technical issues too early before the game's aesthetics can have a chance to develop. It's probably a very common problem with developers who are doing both the art and the programming.

I did speculate on how to overcome visibility issues, by the way, and I have good feeling that it will pan out. This has to do directly with being able to view the structures' parts directly in the DCC.

The gif below is a simple reveal of parts that I've indicated are above head height. These parts are not grouped so that they will become invisible independently. As I said, there is a visibility handling already in place, so these elements get included as those whose visibilities will be affected.

There's another level to this. Not tall parts need to be made invisible; only those that have the potential of blocking the ground need to be made invisible. By looking through the ortho cam that's set up, I can model parts accordingly.






Tuesday, July 29, 2025

CITIZEN: Mapping out Residential

I'm mapping out the Residential sector.

It's becoming  a congruent area. Previously, I wanted to split it up into smaller bits  to make easier to manage.

But I found this a bit problematic. First, I couldn't take my imagination into it. I couldn't invent what corridor that was to follow because I just didn't know what it was about.

Second, the idea that we jump from one mini-scene to another might have seriously impeded the stealth/combat gameplay. I imagined that the combat gameplay would be played out in a wide area where the player character would be able to avoid the robots by being clever with corners and hiding places. That entailed an 'arena' of sorts, and sequential corridors don't the bill.

As an adult, I can't take for granted that some creative techniques don't necessarily give you the tools that encourage to 'follow the fun' and actually be creative. The making of this Residential sector has given me some interesting discoveries about myself.

In my post of my analysis of Torment's level design, I had drawn a few principles that seemed to be relevant to solving my probems. One of those principles was giving levels centres of interests.

I drew a top-down map, placing key areas I knew needed to appear in this level: Citizens Tracking Bureau, apartments, shops, market, park, SubRail stations, Homeless enclaves.

I didn't have any specific rationale on their placement on the map. I simply just drew out the CTB, my first centre of interest, and placed everything else around it

Usually at this point I would feel a bit anxious. This anxiety almost always revolved around the rationale of something, of whether there is a mechanical reason why this here building is here and not there. Sometime I can have anxiety about whether this map will work well in isometric perspective.

But I wasn't anxious this time. I believe it's mainly because I just made the CTB as my focal point. And the logic of where things were placed became less important. The level itself was more satisifed with having a centre intereset than it was about having some rationale of why things were put where they were. After all, in the real world, things end up inexplicable locations, too.

After the top-down map was drawn out, I jumped into 3d to execute it. This normally fills me with anxiety, too because I've been in this road countless of times before. I didn't actually know how to express the top-down map in a way that would excite me.

Then, when I was figuring out a way to express doors/doorways, I unlocked something in my brain. And its importance surprised me.

For a while now, when I usually want to depict a door, I create a solid rectangle and place it flush against the wall; that's the representation of the door.  Whilst it certainly looks like a door, it doesn't look like it's trying hard to be one. Understandably, I've always been unhappy about this.


So I tried reversing it by modelling a doorway instead:



That looks better certainly. It looks better because it feels there's some volume at play, that the door/doorway depicts a recess and that leads you into the building; it reads much better. But why did I say it was so imporant?

What it really does is that it helps my imagination move forward. It's a step towards the correct impression of how the level should be. Obviously, it is not the final shape, but when used to generically populate every door entry, it brings my imagination to a level where it has something more to chew on.

This brings me to the creative techniques, and specifically to greyboxing. A greybox is literally what you see in the screenshots above. You might have heard this word in the game dev scene. In greyboxing, you place rudimentary shapes (primitives) into the scene as stand-ins. As you can see, that is what I'm apparently doing, and yet in deeper sense it isn't at all.

For a long time I had struggled with greyboxing because as an activity it felt like a creative dead-end. Perhaps it's because in greyboxing the designer is told to 'play around'. However, it wasn't actually fun to play around with boxes; I don't play that way. On its own greyboxing was not feeding my brain with something to play on and imagine further. Cylindres were literally just cylindres, and boxes were literally boxes; grey was literally grey, and though I did use greyboxing for programmatic aspects of the game, it was a creative dead-end.

Then the doorway modelling happened and I learned two things.

Greyboxing is too trivial and self-explanatory an idea to be worth any name given to it, and that I should never have paid attention to it at all. 

Second, and more importantly, find ways that feed your imagination; find ways to play off the work and make the work play off of you. Your work should speak to you and cause you to engage with it all the time. Let's say: if I moved this wall or that, or added something, do I think 'wouldn't be great if this were a place where the homeless hung out"? In this case, creative activity is prompting new ideas back.

When I look at the map now, I can see how I'm feeding off of it. I've since introduced more shapes because I can start the see how the level itself it going to look like. But when I began I needed to see something much more  then boxes.

There's also a problem of too much detailing. Once I sketched a medium-sized level as an isometric drawing. I thought that it would be easier to imagine and design the scene in pencil. This was not actually the case for me.

Drawing offered me no creative advantages, and only made my workflow more tedious; I still turned out unsatisfying designs. But what really was the problem here was the same problem as greyboxing: all the while I'm drawing my level, I'm feeling extremely uninspired.

It's not my disposition that's uninspired. Instead, the drawing is not talking back to me. As I'm trying to give it its form, is it feeding anything creative back to me?

I see now that whilst it's not simply about which process is better. Whether I'm doing things in blocks or detailing, following workflows might blind us to what this is all in aid of. For me, every creative process must elicit more imagination from me. Drawing is not always the answer, and neither is industry advice.

Saturday, July 19, 2025

CITIZEN: Workflows: Frustration

Weekends always come to me and I always say to them that they're never enough. The rest of the week is gone to hell regardless of whether I wrote Early to Rise or not. I didn't write Early to Sleep, did I? So that recipe is no good.

Today, I touched the map in the morning. But then it was a walk to the bookstore, then a lunch, then training, then eating, then watching, and watching some more that leads me to back here, asking myself, 'what the hell am I doing?' What, indeed?

What would I have done different?

I would have just wanted to take the afternoon. I could have, but I wanted to go out. Then, I would have wanted the evening, but it is habitual to take it easy and have your palate cleansers and uncleansers. Perhaps I could have taken the last bit of energy, but what good does that do for Early to Rise?

So perhaps I could have the early morning. That would be tomorrow, and since tomorrow is not today, I effectively just gave up today. And now, it's too Late to sleep to be Early to Rise. Time moves forward, is the frustration is keep my body awake to write this when I should be sleeping.

I can't find minutes or seconds of time to recover, or any space in the mind to carve out. Motivation is so rare that I don't expect it anymore.

Sometimes I build up momentum, despite that it is more often a drudgery. The violence is not just in the beginning, but in each inch of travel. There's no easy part.

What am I looking for?

It would be capital to have a bit of fun with this. Or to feel that this project is going somewhere. I'm anchored to this deadweight project, unable to find the groove. There's no rhythm to it. It's stop and go. It stalls and it takes an heroic struggle to get it to totter on.

But  am I really progressing? Clearly, I've been through this bit of road more than dozens of times before. Yet it less to do with the iteration than it is the constant stopping.

I blame Time on principle. But even in Time, there's no way out but through: I ought  to use Time; I ought to find my rhythm. Discipline, anger, planning, sleeping, waking, etc, may all be parts of the answer; I have to keep on moving.

Find the rhythm, man. Or else you're dead in the water.