[ / / / / / / / / / / / / / ] [ dir / random / 93 / biohzrd / hkacade / hkpnd / tct / utd / uy / yebalnia ]

/agdg/ - Amateur Game Development General

AGDG - The Board
Name
Email
Subject
REC
STOP
Comment *
File
Password (Randomized for file and post deletion; you may also set your own.)
Archive
* = required field[▶Show post options & limits]
Confused? See the FAQ.
Embed
(replaces files and can be used instead)
Oekaki
Show oekaki applet
(replaces files and can be used instead)
Options
dicesidesmodifier

Allowed file types:jpg, jpeg, gif, png, webp,webm, mp4, mov, swf, pdf
Max filesize is16 MB.
Max image dimensions are15000 x15000.
You may upload5 per post.


Welcome to AGDG, keep working on your game anon!
See also: /ideaguy/ | /vm/

File: 05ba1f5b057dbb0⋯.png (478.55 KB,1920x1080,16:9,1.png)

312d47 No.29600

I've been working on this project for a bit, but just recently decided to make my own thread concerning it.

The name is bland, the assets are placeholders, and many of the core features are undergoing development.

The goals for this project are simple.

> Implement industry-standard features for this genre.

> Build a code base that is maintainable, professional, and modular.

> Develop additional features to differentiate this game from its competitors.

> Release the source code as freeware for any devs in the near or distant future to use.

The most recent playable demo can be found on itch.io

https://blukatstudios.itch.io/fps-project

I will use this thread primarily to announce the release of playable demos, and will appreciate any constructive feedback.

____________________________
Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

ffbf4c No.29601

Very cool man can you post webms?

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

312d47 No.29602

File: da2b365dfe401de⋯.webm (1.93 MB,720x480,3:2,0.5.5_preview.webm)

>>29601

Here's one video to start with, showing off the new thumbnails I have for map selection.

This week I've been refactoring. I moved the input logic from Actor.cs into DeviceManager.cs (To handle getting each button/axis event from a given controller) and ActorInputHandler.cs (Which translates input events into behavior for an Actor.)

Currently the input events for this scheme are represented as lists of strings. This creates a noticeable amount of overhead, and so I think I'll optimize it by making an InputEvent class that will more efficiently store its data in order to cut down on string comparisons and converting between floats and strings.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

312d47 No.29646

File: 3ae53fc341c894a⋯.webm (465.36 KB,720x480,3:2,Menu.webm)

I just finished a few badly-needed refactors. After some testing and bug-fixes(I can already tell there are some bugs to fix), attention will shift to adding features from the backlog to improve both core FPS gameplay and the Arena.

DeviceManager.cs and ActorInputHandler.cs now use a more efficient datastructure(InputEvent.cs) to communicate, significantly improving performance. This refactor will expedite the future support of additional devices and multiple controllers.

Item kits have their own class (Kit.cs) and are parsed from a Kits.txt configuration file to reduce project-specific hardcoding. This refactor paves the way for user-defined kits in the Arena.

EquipSlot.cs has been rewritten to use an array of hands/items/data and a set of specific methods for the typical use case. This refactor will ease the future re-use of EquipSlot.cs.

The inventory equips items in-place(video related), as in the fallout games. Inventory.cs now tracks the status of each slot either being empty, associated with a stored item, or associated with an item equipped to a particular location. This refactor enables future development of:

-Cycling through weapons in inventory using mouse wheel or right/left D-pad.

-Selecting inventory slots to use with particular hotkeys.(1-4 on keyboard, RB+D-pad on controller)

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29717

File: f09d9fe1f8574e9⋯.webm (275.06 KB,720x480,3:2,Default Project.webm)

Alright, here's my progress.

-Refactored some code(PaperDoll.cs, StatHandler.cs) to use constants instead of strings for better performance.

-Stamina is now consumed by sprinting, melee, and very slightly from recoil.

-Added cone-of-fire accuracy for ranged weapons that is influenced by stance, walking/sprinting, aiming, and having low stamina(To account for heavy breathing).

-Damage is now represented by its own class (Damage.cs).

-(Video related)Added graphic reticle that grows or shrinks according to accuracy.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29726

File: 873a8c24fc0c305⋯.webm (1.93 MB,720x480,3:2,bars_and_iron_sights.webm)

Another update:

-Added bars for health, stamina, and mana.

-Can now aim using iron sights(Though the caster rifle is the only weapon with iron sights).

-Actors can now be staggered. Currently this takes place when they receive more than 20 damage, but I'll revise that to use a player's Endurance stat later.

-Damage multipliers have been removed from the HitBox.cs class and will be handled by StatHandler.cs in the future.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29747

File: ddcf0797dd4ef9a⋯.webm (846.56 KB,720x480,3:2,CustomKits.webm)

-The Arena lobby has been streamlined with sliders and gameModes to pick betwen rather than a mess of different settings constantly visible.

-SessionEvent.cs was created in order to systematically report events to the Arena(for scoring in gamemodes) or World(for quests, eventually)

-Maps are now defined in the maps.txt config file along with their thumbnail name and their compatible gamemodes.

-Weapon spawners now exist for gameModes that allow them.

-(Vid related) I'm in the middle of making a menu to modify a set of custom starting kits, as is the fashion in modern FPS games.

I'm starting to form a better impression of the sorts of the variety of gameplay I want to embody in the Arena. Once kits are done, attention will probably shift towards expanding/polishing features to service the following three styles of gameplay in the Arena.

-Arena shooter- Relies on fast movement/twitch skills to deliver/dodge

fire whilst competing for the stronger, often gimicky, weapons on a map. I might accomplish this by starting players with strong armor on their torso and legs to put emphasis on headshots. A speed boost would also help with the faster gameplay. Inspiration for this are Halo: CE and Unreal Championship.

-Battle shooter- Winning a battle by running down the enemy's reinforcements and accomplishing objectives is the key here. Kits fall into classes that serve complimentary roles. If I add vehicles, they will be significant in this context. Inspiration comes from Battlefield 2 and Star Wars: Battlefront II.

-Tactical shooter- Not getting shot is key here, as bullets hurt. This may mean utilizing cover/high ground, sneaking past enemies to get to objectives, or clearing rooms using a squad and specialized weapons. Inspiration comes from Ghost Recon/Rainbow Six: Vegas 2 and to a lesser degree Start Wars: Republic Commando.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

3baf18 No.29750

So why did you decide to start a new engine? I'm curious about what you can do better than tinkering with the existing free FPS engines. The two engines I'm thinking about are IOQ3 and Sauerbraten.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29751

>>29750

Building this project from a relatively blank slate like Unity has allowed me full control over how this stage of development (The Arena mode) will effect others in the future. The bulk of the work I have planned is either not significantly aided by a specialized engine, or could potentially be hindered by one. I'm tempted to continue sperging out about such future goals, but suffice it to say that I'm going to have to implement features like vehicles and weapon mods on my own regardless of the tool used.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29763

Finished up the kit editing menu. This is just some brainstorming for what I need to tackle next, and how I should tackle it.

I want to add some more complex gamemodes, and I'm quickly realizing that this means I should clean up how gamemodes are currently represented and configured by the player. The current idea is to move the business logic from Arena.cs to a dedicated subclass. ArenaLobbyMenu.cs should offer different customization options according to the selected gamemode.

The gamemodes I have planned for the foreseeable future are as follows.

Skirmish- Variants of deathmatch where the singular objective is to get the most kills/frags.

Tactical- Counter-Strike clone gameplay where two teams have mutually-exclusive victory conditions and a game takes place over the course of multiple rounds with cumulative kits expandable from a buy menu.

Conquest- Two teams fight over a set of control points. Respawning is limited by each team's reinforcements counter. Players select from a list of class-based kits and between control points owned by their team. Victory conditions are achieved by capturing all control points for 30 seconds or killing every enemy when their reinforcements run out.

I'll start with the Skirmish gamemode and set up for the other two.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1661f2 No.29779

Sir, I must ask you a question:

While I am an idea guy, would you object to suggestions to make this more versatile, entertaining, and clever in the long run?

Perhaps you could allow for gradual increases to various aspects of combat?

Speed of swinging/during with a soft and hard cap, strength of the blow, reactivity sensitivity of the mouse???, maybe even potential manipulation of what is in hand mid use?

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29783

>>29779

As long as you give actionable suggestions/criticisms, I'm all ears. The more concrete your feedback(pretend I need everything spelled out to me, because I just might), the better.

I'll address the list of topics you mentioned.

-Speed of swinging/during with a soft and hard cap - I'm going to keep all animations at regular speed to reduce the amount of complexity of the Actor's Animator. As with most editor-reliant features, the Animator is unstable, must be manually configured(instead of by a script that can benefit from programming tricks), and is not ideal for version control.

-strength of the blow- Melee and Unarmed attacks currently use the Actor's Strength attribute to calculate the damage given.

-reactivity- I don't know what you mean here. Could you explain?

-sensitivity of the mouse- Good catch. I'll have to add a settings button to the main menu, as you can only get to that menu by pausing in-game currently.

-manipulation of what is in hand mid use- I will also need some more explanation here. You can currently drop items mid-use. I'm not sure what other actions should be possible.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1661f2 No.29784

>>29783

Okely dokely!

Reactivity is also mouse sensitivity. There was no comma, but spoilers probably confused the matter some.

Manipulating objects mid swing/use:

As in swinging a melee weapon and being able to actually let go and "throw" the weapon...or gun. Enemy too far?

Throw your weapon at him.

No ammo?

Throw your weapon at him.

Now I have yet to noodle around in your newest update, so I will get back with constructive suggestions later.

In the meantime liking what I have seen so far. Keep up the good work.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29785

>>29784

I'm glad you're enjoying what I've got thus far.

-"throw" the weapon-

I've thought long and hard about how I want to use the D-Pad/1234, and am leaning towards making it a "on the fly"(use without equipping) ability slot. An ability to throw the current item as a projectile could be one option.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

5513da No.29792

Update: I've been job hunting the majority of the dev time for this project, but that just came to an end. I'll probably continue and release this as freeware, but I wouldn't hold your breath for me to continue to dump time in at the same pace.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

3baf18 No.29793

>>29792

That's cool if you keep us updated with anything. We all understand the nature of occupations.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29810

The most recent update has been uploaded to itch.io.

In addition to custom kits, some work has gone into moving the business logic of Arena.cs into scripts specific to a particular game mode. The first of these is DeathmatchArena.cs.

The next game mode will be the Tactical mode, based heavily off of Counter-strike. The following features need to be implemented for that to work.

-Each game consists of a number of rounds.

-Red team's objective is to plant a bomb at a bomb site and defend it until it detonates.

-Blue team's objective is to prevent the bomb from being planted, or defuse it.

-The inventories of live players should persist between rounds.

-Players can purchase items from a buy menu in the first X seconds of the game.(Ai pick items semi-randomly according to budget)

-"Leader" AI will attempt to move to the bomb site(s) to plant/defuse bomb using pathfinding.

-"Follower" AI will select a leader and follow them,

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29816

In moving forward, one thing that needs a heavy overhaul is AI. One of the biggest limitations I ran into was the bottlenecking Coroutines cause on the main thread. (This was especially noticeable for my initial attempts at pathfinding.)

I started fiddling with a couple example programs to make sure I understood how to use multithreading with objects in C#. If anyone has experience with multithreading Unity3d, feel free to weigh in on it.

AI is currently implemented as a primitive state machine wherein each state performs a task(eg Selecting weapon) and then transitions to another(eg fighting with melee/at range). All states are represented as sublcasses of AI.cs.

I'm thinking my first solution shoehorned in OOP where it had no right to exist.

The idea might change as I fiddle with it a bit more, but my current line of thought is to store all the variables in AI.cs and store all routines as static methods in other files. In this way, AI.cs serve only to start/abort threads in order to transition between states(Meaning AI.cs won't become more complex, even as the behavior does.).

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29826

Not sure if you people appreciate me posting here to talk about brainstorming, but that's what I'm going to do right now.

Looks like I misunderstood that one should only create as many threads as there are cores. I'm targeting a <$500 budget gaming rig with 4 cores, so I have three extra threads to play with. For the AI, I'll just use one.

I can keep the code structured with AIManager.cs holding one of many subclasses of AI.cs, but I need to get rid of all the looping coroutines. In place of them, I should just have an Update() method that performs one iteration of work.

From that point, I can place a list of AIManagers in Session.cs and dedicate the new thread to looping through each AIManager and updating them.

If all that works out, I'll add some timers to update AI no faster than a certain rate. and possibly allow AIManager to update itself using a coroutine if no Session instance is available.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29830

Got the Session to update a list of AIManager instances that simply printed to the console.

When I tried to re-implement the AI to work this way, I realized you cannot use the majority of Unity's API from another thread.

Honestly, this might be the final straw with this game engine. Unity3D is excellent for making quick prototypes or mobile games, but at this point it's really hindering more than it is helping. The learning curve to jump engines at this point is probably a better investment than continuing on with Unity's limitations or purchasing content from their asset store to bail me out every time I have a problem.

>>29750

I'm going to research the game engines you mentioned. Please feel free to mention any other engines you think would be relevant.

The next engine must have:

-FOSS

-Limited/no use of a GUI editor.

-Multithreading

-3D models/animations/lighting

-Run on a budget gaming rig from the current year.

It should have:

-Networking support

-Physics engine

-Run on laptops

It would be nice to have:

-Controller support

-Multiple cameras/audio listeners

-VOIP

-The ability to run on single-board ARM computers such as Raspi3 and Odroid-XU4

I'm going to go ahead and immediately remove unreal 4 from consideration, as it looks similar to Unity3D, but targeted for graphically-intensive FPS games. The editor(which is required for the workflow) will barely run on my current machine, and I doubt my texturing/modeling/animation skills will every fully utilize the graphical fidelity.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29836

Alright.

I checked out IOQ3 and Sauerbraten. Both of the repositories I found contain virtually no documentation and are not structured in a way that is immediately obvious to me. The class and method names don't seem to be particularly helpful, either. (for Sauerbraten's Ai there is Think() and Logic()) They are not options.

I investigated the community fork of Sauerbraten named Inexor, but unfortunately the thing has a few layers of added complexity to it called inexor-flex that made installing and running it on my computer an exercise in troubleshooting that I never want to put the end user through.

I think I aught to continue working in Unity, at least to make a crude prototype of what I want before I attempt to port it to another platform.

Godot seems like a decent candidate. They resemble an open-source MIT license version of Unity that is multi-threaded and interacts with its community. Even if performance is not optimal, I will probably be able to make an enduring piece of freeware with this.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29855

One thing I learned from looking at Sauerbratan's source code is that enumerations are a thing. I just finished converting all my integer constants to enums. The code is slightly more concise and clear to someone viewing it for the first time.

As for my search for an ideal game engine, I think I might wait on that. While Unity3D is poor for great optimization/polish, it should be more than adequate to make a working prototype. I should get as close to realizing my ideas as I can before restarting with a new engine.

As such, I'm going to once again redraft my goals/requirements and see what I can get done before they change again. I'm going to drop the Tactical mode in favor of getting Conquest mode up and running. Various improvements and additions required for that mode will work towards some of my higher goals for this project.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

47fb50 No.29900

>>29836

kek I've also looked at Sauerbraten/Cube2's source code at times, out of curiosity.

I respect its code because it works really well, but structurally.. it's very odd and unintuitive, I could never work with that.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29902

>>29900

Yeah. I really do respect how well it works, but I'll do my best to keep my project from ever being both strangely written and completely undocumented.

My most recent efforts have been toward rewriting the AI to eschew the use of Coroutines in favor of working iteratively from an Update() method that is called with the same frequency as the ActorInputHandler is. This will hopefully reduce overhead and complexity whilst making AI.cs's convenience methods more reusable.

Once I've got the existing AI (wandering and fighting) rei-mplemented, I'll work on getting some basic follower AI that operates like a turret that follows you.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

1a069f No.29919

Ok, I finished converting the existing AI to work around an Update() method. try-catch blocks have proved incredibly useful for overcoming null pointer exceptions caused by actors respawning.

I fear that my new job(I've begun the moving process and the job will start shortly) will sharply reduce my time budget. My plans right now are to prune non-functioning code and finish providing thorough documentation so that this project can serve as an entry into my portfolio.

After I am settled into my new job(ie get past the initial learning curve and busy season), I expect to budget more time toward hobbies. This project will most likely be abandoned along with my use of Unity3D. When I begin my next project, I'll mention it in this thread.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

3cdbfa No.31903

File: ceb5809bdde9e50⋯.png (101.91 KB,1920x1080,16:9,inventory_menu.png)

So, it's been a considerable amount of time and I've abandoned Unity3D for Godot 3.

A good portion of my time was spent focusing on work while waiting for updates to render the engine usable for C# scripting.

Now that I've been using it for a while, I find it superior to Unity in a number of aspects. Whilst it lacks features such as 3D view of an active scene, it makes up for that by providing a more source-code oriented workflow. In Unity there were many systems that simply demanded I click and drag for an hour or two instead of writing and changing a script that dynamically does the work for me. I've yet to run into anything that has forced me to not use code. Additionally, Godot core classes are both serializeable and have constructors. This means that I don't need to produce scenes/prefabs and can instead build node trees on the fly depending on the needs at the time. I haven't done anything terribly fancy with this functionality yet, but have had the pleasure of making a game out of source code and not binary files. Additionally, the one class per node seems more intuitive to me than a gamenode with however many components attached.

Once it was working well enough for my purposes, I made this project. (With a new github accunt).

https://github.com/blukatstudios/FPS_Project

This project is MIT license, so feel free to use it as the starting point for a commercial product if you want, or to reference its code if you aim to learn Godot.

The game right now has almost no content in it, and this is intentional. I'm trying to get the game functional to do some fancy functionality and I don't want a ton of content or polish features to slow down core changes or introduce regression. Once the bones of the game are put in place, I'll take a second pass to clean up the look and feel.

The latest release contains a simple multiplayer arena shooter. This will serve as a place to test the look/feel/balance of combat features when they are developed in the future.

My current efforts are going into an open world game mode with voxel terrain. The intent is to provide a simple setup for terrain generation and manipulation. When the most primitive version of the game mode is done, I'll do some roadmapping for the next chunk of functionality. (I have a good idea of what I want to do, but don't want to spend much time planning until I've finished the current scope's features)

My lore can be found here https://github.com/blukatstudios/ManafestLore and is where I'll dump creative content to be injected into the game when it's ready.

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.

3cdbfa No.31904

Oh, I forgot to add. This game is made for myself and the linux community. If people want to port it to windows, I welcome them to do so, but I have no intention of doing so myself(partly because I have no dedicated windows machine that would be up for this task).

Disclaimer: this post and the subject matter and contents thereof - text, media, or otherwise - do not necessarily reflect the views of the 8kun administration.



[Return][Go to top][Catalog][Nerve Center][Random][Post a Reply]
Delete Post [ ]
[]
[ / / / / / / / / / / / / / ] [ dir / random / 93 / biohzrd / hkacade / hkpnd / tct / utd / uy / yebalnia ]