Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Work in Progress / Sports Fiction ®

Author
Message
Ortu
DBPro Master
16
Years of Service
User Offline
Joined: 21st Nov 2007
Location: Austin, TX
Posted: 31st Jul 2022 06:40 Edited at: 31st Jul 2022 06:41
Performance bottlenecks are the bane of developers everywhere, finding ways around them is the hallmark of a capable engineer. I've had a lot of success in my career by pursuing creative and unconventional solutions and wish you the best here.

I'm interested in hearing some more details on your terrain solution. What are you using if not a height map? Modularity is always good, but how is that being applied here? At the end of the day isn't some kind of height data still needed? Good, detailed and efficient terrains are complicated things, I'm super curious how you are approaching this

Edit: page
http://games.joshkirklin.com/sulium

A single player RPG featuring a branching, player driven storyline of meaningful choices and multiple endings alongside challenging active combat and intelligent AI.
Dimis
13
Years of Service
User Offline
Joined: 12th Jun 2011
Location: Athens, Hellas
Posted: 6th Aug 2022 18:11
I hope we get to see some of your progress soon! Are you still going for a cartoon visual style?
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 16th Sep 2022 10:14
I've now used an array of grids and called it a cell container. The terrain can have multiple cell containers for a variety of purposes. Depending on what surrounds cell, or what class of cell it is, the cell is rendered dynamically and then forms a mesh. I can have a mesh applied to flat land and other meshes applied to cliff edges for example.
I plan to add these meshes to a memory cache and file cache when not near the camera.
The main terrain features are not height field based, but there will be applications of height field terrains in use here and there.
I will be able to draw these terrain cells like pixels, but for now I am generating them while I focus more on the artefacts and architecture. I'm taking advantage of the improved hardware of today and using more non-destructive CAD features.

The visual style will feature cartoonish shading to resemble a variety of techniques used in comics. I also plan to use comic panel layouts for much of the user interface. And will reuse the style in future projects in general to make use of my investments in the rendering techniques.

I've been more consistent with my coding sessions over the past year and will soon be able to turn a bunch of lines into buildings, and performance will be more manageable this time. Once that is done I can start animating things, and I am currently looking for a better physics engine DLL.

Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 19th Nov 2022 08:08
Update

Currently playing around with geometry drawing functions which will use models to render lines, triangles, circles and grids into buildings and terrain. I have the mouse drawing actions interpreted, but I have got to spend some time working on storage and deployment of the level outlines drawn, 3D models and shaders. I shall also start putting together the user interface controls which resemble comic strips. All in all, I shall be approaching the end of the boring phase of building the framework. After next month I can start working on the fun part (which is what I care about).
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 11th Jan 2023 08:34
Update

I have about 25% of the level outline drawing tools completed. The line an shape tools, together with the terrain grid, will progressively extract level entities out of templates and use the 3D models in the templates, their materials, their lights and arrange them accordingly around the player's camera position. Blender 3D model scripting, Adobe CC scripting and an Entity Framework system will feed 3d dbo models and so forth packaged into the templates to be rendered by the Dbpro viewport and the terrain it presents. From the player's perspective it will all look like a typical game level. From my perspective, I shall build levels, this time, without repetitious mouse clicking and vertex-pushing a million times just to line up a road along the terrain.

I have recently completed my viewport engine performance monitor rather quickly. In my failed attempt I had to spend about 30 minutes trying to figure out what was bottlenecking the performance each time a new impacted an existing feature in a performance degrading manner. I have been thinking about this for quite some time, as garbage collection and poor performance design led to an unmanageable circumstance. It had a rather limited engine performance monitor which only recorded the timespan between 20 or so major functions.
The new performance monitor has ability to check timespans of each and every function, 500 and counting so far, with some functions logically excluded from monitoring. There are event recordings, object detail recordings, recordings for limb counts, polygon counts, collision counts and when all of such occurs; and I get to look at the results in an Excel spreadsheet with graphs when ever I please. There are to be 3 versions of the viewport, at the time of writing. The normal version, the profiler (performance check version), and the one I am about to start writing next week, the debugger version.

The debugger version shall inherit the code base of the profiler performance version I wrote, and simply provide me with a means of checking, logging or editing variables at any point during runtime testing.

Attachments

Login to view attachments
Kevin Picone
22
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 7th Feb 2023 03:26

Love the performance monitor stat's !

PlayBASIC To HTML5/WEB - Convert PlayBASIC To Machine Code
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 9th Mar 2023 10:43
I appreciate that Kevin!

I shall now be very glad to know that whenever a component of the game is leading towards an unmanageable bottleneck, I can see this occurring far in the horizon through such visualisations. So desirable that something similar is being developed this week that provides visualisations of the DBPro variables, needing to be analysed and tested for any potential bugs without the need to recompile the executable.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 14th May 2023 16:53
Update

This is the weekend where I attempted to provide cell based terrain smoothing. The task has been rather more complex than I anticipated, and will need to spend more time designing, testing, tweaking and finding the most efficient means of applying terrain characteristics and levels of smoothing in the production environment.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 4th Aug 2023 18:20 Edited at: 4th Aug 2023 18:23
Update

After a busy spell at the work place refactoring apps upon apps.., I’m now looking forward to the added spare time to play around with terrain smoothing algorithms and techniques.



I was not satisfied with the original concept of deforming the boring terrain grid based on a (boring) single sized cell, and have moved on to a more flexible hierarchically (scalable) arrangement of cells that can be as refined as complex as is suitable for the sort of terrain features, and their proximity to the camera. The terrain cell will now have the option to be broken down into however many levels will suit the look.
I.E. terrains cells inside terrain cells.

This also led to extracting a base class of cell that applies the same principles hierarchical arrays to other sorts of entities, but I’ll see how well this goes. Now that things are quiet at work, I shall press on with this.

Attachments

Login to view attachments
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 26th Oct 2023 18:42
Update

Terrains, Bezier-meshes, cell grids and other geometry components of the system are undergoing clean-ups and integration tests before focusing creativity. The implementations are decoupled from each other and from the technology; a design that will provide me with a level of freedom to swap, change and adapt features and technology without having to start over like the last time.
One last boring spell then things get more interesting,
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 1st Jan 2024 17:26
New year update

The code base is starting to scale much better than ever. The foundation is almost set as I add in the final base classes for grids, terrains and meshes. Once I can get the this up and running, most likely this month, the visual aspects of the work will become the central focus. No more low level code base work moving forward.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 29th Mar 2024 11:00
Spring update

From end to end, we have our 3D viewport, user interface, desktop client, low latency server, background worker services, web API, entity configuration web application, and a database SQL server all working together as a modular system with replaceable parts. A separation of concerns with a time consuming set-up phase, calling for a great deal of patience. These sub projects are now functioning; enabling me to test, tweak and save my entities without having to think much about it. When a new technology needs to be introduced into this system, and an old one replaced, there are enough seams between the implementations to scale and extend. It took a while, but the pros out way the cons. Unlike before, now when a bottleneck arises, or something malfunctions, it does not affect the whole system, like it did when I had about 2 sub-projects; problems a segregated and dealt with more quickly on separate layers of abstraction.

My next task is to implement audio and visual controls into the web application in order to define materials, shaders and terrains via web app, instead of with script files, and to do so while the game runs without having to restart the game to make changes.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 18th May 2024 17:15
Spring update 2

I'm currently synchronising my local desktop entities with what defined on the a database server. There is a web application, between an API, which configures the entities for the desktop viewport. My spare time this month will be binding the data together. Hopefully, fingers crossed, I will for the first time have controls over my visuals, to an extent, from this data driven web application. I'll then need to spend time testing out the setup.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 13th Jul 2024 19:06
Summer update 1

The synchronisation process continues. I'm still working part time on the API and database server. On the desktop we have the viewport and interfacing applications which obtain their logic and configurations from an online API. The online services have convenient spaces to grow and expand, keeping the local DBP source code short, sweet and focused. If the desktop app, for example, was tending to create all lobbies, but the need arises for lobbies to be created in a browser: no problems, no code changes necessary, such functions will be available from the same service. Likewise, if textures are exclusively uploaded on the server (in a domain being called studio), but the need arises for people to generate textures locally, the simple action of calling an endpoint with credentials will be a one liner.

The entities have their resources and logic organised into features and phases on the server, reducing the need for duplication where possible. This allows a variety of applications with permissions granted in the domain to make use of logic, not just one running application.
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 31st Aug 2024 09:08 Edited at: 31st Aug 2024 09:10
Summer update 2

The logic for the editor and game is being broken down into an entity called a Feature. This entity is created in my database, web API, and is edited in the web app, called SF studio. It was given this name to distinguish it between the website and the web editor. The studio app, which has been developed with Blazor for the past year, is a C# powered single paged web application that I will use for remote configuration and collaboration on the game with collaborators. The studio app sits on top of the SF API, as does the game itself.

The entity logic and asset configuration will sit in one place to avoid duplication.

Eager to run the end-2-end solution, I will continue, in my limited spare time (these days), to synchronise all the moving parts so that the game can reflect changes without restarting the game, and can accept changes from multiple creators.
TheComet
17
Years of Service
User Offline
Joined: 18th Oct 2007
Location: I`m under ur bridge eating ur goatz.
Posted: 17th Sep 2024 15:07
Can you remind me again what this project does? I've a hard time understanding what it is. I saw sports so I thought it was a sports game
The past is history. The future is a mystery! But today is a gift. That is why it is called "present" -- 3D Turtle
https://forum.thegamecreators.com/thread/229638 -- Modern compiler for DBPro!
Chris Tate
DBPro Master
16
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 20th Oct 2024 21:11 Edited at: 20th Oct 2024 21:13
Quote: "Can you remind me again what this project does? I've a hard time understanding what it is. I saw sports so I thought it was a sports game"


Yeah I don't blame you for asking because there is a lot of non-game related back-end work taking place here. I'll certainly clean up this thread when I get round to it. I don't have much free time.

To answer the question, part of this is a sports game; part of it is a backend for my authoring it. I have a database of game entities and I've built an internal web browser based management tool (simply called studio) for creating and editing the game entities. It allows me to collaborate on the entities online. It will also allow me to work remote, and I make changes without having to touch any game code. The DBPro app just needs to load the entities from the database (via a web API). Each component are their own code project: database, API, web studio, game.

So, once that's all integrated, I can then focus on the game, which will indeed be sports fiction related: Sci-fi themed sports.

To add autumn update...

I've had an interesting month this October. The bad thing about it was the need for me to focus on a code project for work, which took up 6 weeks of spare time. The good thing was that the project required me to write A.I. for generating paragraphs. The paragraphs were for providing feedback on code written by learner developers. It is an A.I. assisted teaching tool which provides hints and conversations around coding standards.

I created the speech building algorithms for this in such a way that I can reuse the logic for the speech in this game project for when A.I. needs to have paragraphs generated for providing hints and feedback to players. So, that was a nice experience. The developers are having fun learning with it. I used what I learned from gaming A.I. and applied it to finance development. Now I have two birds knocked with one stone, I have what I need to generate A.I. speech for the game.

Now back to the integrations. I will continue to map the entities on the web server to the functions in the desktop game app. This works by breaking down entities into assets, events and functions, and feeding the entities into the desktop app. At the moment all the DBPro methods, such as the ones for terrain building and shader loading are waiting for entity data.

Login to post a reply

Server time is: 2024-11-16 22:50:17
Your offset time is: 2024-11-16 22:50:17