Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 01:57:02 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsDuality
Pages: 1 2 3 [4] 5
Print
Author Topic: Duality  (Read 18715 times)
Adam_
Level 1
*



View Profile WWW
« Reply #60 on: December 04, 2015, 05:18:32 AM »

More work on the Tilemap plugin!


What I'm testing here is arbitrarily shaped brushes, context-sensitive picking and the tilemap editor's integration into the editor-wide undo / redo system. Making progress, but still a lot of stuff ahead on the roadmap.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #61 on: December 06, 2015, 11:09:42 AM »

Testing what happens to the editor when creating two renderers that both use the same tilemap: You can actually edit either one and get the proper action preview highlights on both of them. Also, Rect, Oval and Flood Fill tools.


Slowly getting there. Next up: A way to actually select which tiles to paint.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #62 on: December 11, 2015, 04:10:52 AM »

More progress! There's now a tile picker tool that allows to use tiles from an existing tilemap as a source pattern for drawing. Useful for repeating and re-using parts of the map, or for copying stuff from one tilemap to another.


You can use it by either selecting it as your primary tool, or holding down the Alt key at any point to quickly select a pattern and then return to the previously selected drawing tool.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #63 on: May 27, 2016, 02:06:18 PM »

Hey, how have you all been? Good? Good.

It's been a while. I brought an update. Hand Point LeftWinkHand Point Left

Duality And The Lurking Cross-Platform Question

First of all, let's bring up one of the oldest questions in Duality development: Will it run everywhere? No. But apparently it runs on Linux and MacOS using the awesome Mono implementation of the .Net Framework.



To be fair though, having a few users report that it works and runs a few of the sample projects isn't anywhere close to actual platform support. It will take a few projects deploying to those platforms to get the rough edges smoothed out and there will certainly still be lots of issues, but I think that this is an excellent starting point. Follow any of the two above links if you want to participate!

Asset Management Improvements

Secondly, the Asset Management system has been improved. You can read the details (and a lot of history) on this in my recent blog posting, but it essentially boils down to a big internal refactoring operation and the fact that your custom asset importers can now easily request and access import parameters, which will then be serialized and exposed in the editor. Importing an asset now took one more step towards being a conveniently repeatable and configurable process, and some parts of the editor already took advantage of it.

Ongoing Work On The Tilemaps Plugin

The Tilemap editing functionality that I previously posted is now finished and I've since tackled Tileset editing, so users can tell the system about collision layers and depth offsets. Some of that progress in video and image form:

Tilemap Editing:

(Click Me, I'm a gif)

Just a fast-forward of me editing a test map to see how well the tilemap editing works out. Except for the fact that that there is no auto-tiling yet, I think it already works quite nicely.

Multi-Column Tile Palette View:

The interesting part on this one is that the tile palette does have an automatic "line break" to layout non-square tilesets on the available area, but it tries to preserve the original tile neighborhood relations as closely as possible, so rectangular selection still makes sense for connected tiles.

Tileset Editing:

(Click Me, I'm a gif)

This is where a Tileset get annotated with data about depth offsets and orientation, as well as collision shapes. Collision data is not yet applied to actual ingame logic, but that's one of the next points on my ToDo list.

Sample Map, Character and Camera Controller:

(Click Me, I'm a gif)

The players walks around rather erratically when using keyboard controls, which I'll have to smooth out a bit at some point. I'm quite happy with the camera though, as it smoothly follows the player but stops right before reaching the map edge.

Anyway. Let me know if you're interested in alpha-testing the tilemapping plugins!
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #64 on: June 19, 2016, 05:04:29 AM »

More progress! This time mostly on the tilemaps plugin I'm working on.

There is now a TilemapCollider Component that will transform any amount of input Tilemap-Collisionlayer pairs and mesh them into a set of shapes for an attached RigidBody. This will allow you to create a single RigidBody for world collision and hook it up to the Tilemaps you're using. It also keeps track of the exact shapes it created, so you can also add your own.


(Click Me, I'm a gif)


And here's some editor footage of me walking around in the sample map with the test actor:


(Click Me, I'm a gif)


I've added a raycast in movement direction, so the actor will slow down on its own a bit when approaching a wall. I thought it was a bit immersion-breaking when you can just run head-first into a wall at full force and your character will just do it, so I'm testing this approach to make movement feel more natural.

By the way, if there are any proficient artists reading this who would be willing to join me for a (very) small project, let me know. It's probably going to be something short story / RPG-like / experimental to get a feel for all the new tilemap stuff. Art style doesn't actually have to be pixels.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #65 on: June 26, 2016, 12:17:45 PM »

Okay, time for a fun prototype. Wizard

There was this local game jam recently, and I decided to revive and recycle an old spellcasting system prototype I did back in 2014. What is this prototype about? It's really mostly a crazy game idea, but I like it for its creative potential. Let's say you're playing a retro-ish rpg game where your main character can become a wizard at some point - but rather than getting a fixed list of spells you're slowly populating, you actually have to learn a runic language to express what a spell is supposed to do, and then write your spells in it.

It took a bit to work out the details, and there's quite some unresolved complexity in there, but I kind of just wanted to throw this out there to see what people think. So, here you go!


Ah, and the game jam's theme was "darkness", so I added some pseudo-lighting to the prototype to make it fit a little better.

Download: Link

After you've downloaded this, run DualityLauncher.exe, open the spell editor with P, hit F1 to load a simple fireball spell, close the spell editor with P and then run around using mouse and WASD while throwing fireballs with your left mouse button. There are more spells on various other F keys and you can write your own as well - though I'm pretty sure I've already pre-written every useful spell that's possible with the limited set of runes so far.

To be continued! Smiley
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #66 on: July 17, 2016, 08:42:18 AM »

The Tilemaps plugin slowly approaches a state where I consider it for binary release. Before actually doing that I want to get some more feedback though - the release version should be in a usable and mostly bug-free state after all.


So I've written a tutorial on how to use the Tilemaps plugin. It's just a quick intro really, but enough to getting some basics done and taking a quick first glance on how the tooling works. Everyone who is interested in the new tilemap editing toolset and API can check out the pre-release plugin in a few simple steps:

  • Clone or download the latest Duality source code repository.
  • Open Duality.sln in Visual Studio and hit "Build Solution".
  • Select the DualityEditor project as startup project.
  • Run it using Visual Studio's "Start without Debugging" option, i.e. Ctrl+F5.
  • You're all set for the Tilemaps tutorial.

Let me know if all the steps work for you! Feedback to the Tilemap editor pre-release would be really appreciated. Smiley
« Last Edit: July 17, 2016, 08:52:48 AM by Adam_ » Logged

Adam_
Level 1
*



View Profile WWW
« Reply #67 on: July 24, 2016, 02:39:41 AM »

Release: The Tilemaps Plugin

Allright, the tilemaps plugin has been released! You can now grab it in the package manager to get a quick look. For those of you who are still new, here is an illustrated guide on how to start the tilemaps sample you saw in all the animated gifs on your machine:

Step 1: Have a Windows Machine

That's pretty straight-forward. Just get rid of that Linux or MacOSX installation, take a few hours to download and install Windows and a few days to get familiar with your new work environment. See? Simple!



Step 2: Download Duality

Next, quickly follow me to the Duality project page and hit the Download button. You will get a .zip file that you can conveniently place on your new shiny Windows Desktop. Extract the .zip file and open the extracted "Duality" folder. You can rename it if you like.



Step 3: Install Duality

Double-click on DualityEditor.exe to fire it up. When you do that for the first time, it will install itself by downloading the latest releases of some required packages. Don't worry about the term installation though: It won't do anything to your system, or even leave the realm of its own folder. You can copy it around, clone or rename it and it won't care. Every Duality installation is completely isolated and 100% portable.



After accepting that you're now in the land of MIT licensed Open Source in a neat UI dialog, you will see something like this:



That's Duality getting comfortable in that folder. Lean back and wait until it's done and restarted itself. A fancy splash screen will wake you up when it's ready.

Step 4: Install the Tilemaps Sample

Shortly after being greeted by the now freshly updated, reborn Duality editor, it will start to look around in its settings and find that it has never run before in that folder and thus, you must be a new user. Here's what this will look like to you:



One of the intro options is to browse the sample packages. That's exactly what we want, right? Click on it to bring up the Package Manager. That's the same guy who just made sure Duality is all updated and well, and he can help us with fetching that Tilemaps sample package all the same.



After it retrieved the list of latest packages from the online repository, select Tilemaps Sample and hit install. After the progress bar reached its end, click Apply to restart and integrate the new package.

Step 5: Run the Game

With the new package, you will now find an area called Project View to be filled with this:



Double-click on the item that says RpgLikeSample to open the scene resource in the editor. You will see a map and various objects in the main area of the editor. Let's see the sample in action!



In the upper left, click on the dropdown that says Scene Editor and change it to Game View, which will provide us with a non-editable 1:1 representation of what the game would look like when rendered in the size of that editor main area. Now hit the Play button in the top toolbar.



You can now walk around with WASD.

Step 6: Be Amazed and Curious

Faced with this sensory overload of new information and amazing content, you are now free to head over to the Getting Started tutorial to get to know Duality, or the Using Tilemaps tutorial if you want to directly pick up where you left off testing while skipping the basics.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #68 on: August 01, 2016, 11:23:32 AM »

Game Jam!

We'll be doing a small, itch.io-hosted game jam from August 12 to September 12. Theme voting will be open until next weekend, so if you're interested in participating, head over here! As soon as the vote is done, I'll update the game jam page with the results and voting criteria.

For a quick overview, take a look at the game jam page on itch.io.
« Last Edit: August 01, 2016, 11:55:46 AM by Adam_ » Logged

Adam_
Level 1
*



View Profile WWW
« Reply #69 on: August 07, 2016, 10:00:20 AM »

Unlike planned, I'm working a bit more on the Tilemaps plugin, more specifically: AutoTile support. If you've worked with RpgMaker, you already know what's up. If you've worked with Tiled, it's a bit similar to its Terrains feature, but it feels less "bulky" because AutoTiles won't build matching tiles around your tool, but modify the drawn tile itself to match its surroundings.

Anyway, most of the algorithm and editor stuff is still to do, but I've worked out some of the core infrastructure and extended the Tileset editor so you're able to specify AutoTile information:


(Click Me, I'm a gif)


Unlike the RpgMaker approach, where most of the magic happens behind the scenes, you get to specify explicitly what your tileset has to offer, i.e. each tile's role in a certain AutoTile. The core will later use this information to generate all the missing pieces automatically - regardless of the AutoTile layout or type you're using. Overall, it's a little bit less "plug and play", but it offers a lot more freedom with regard to different tileset styles.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #70 on: August 13, 2016, 03:12:59 AM »

The themes have been determined and the jam has started!

Themes:
  • Farm Life
  • Never Stop Moving
  • Hack'n'Slash

The jam will run for a month, so there's plenty of time for one, or maybe even two small prototypes. Click here if you want to join Smiley

Also, feel free to use this thread as a jam-related worklog, or take it to twitter with the #Duality2D hashtag.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #71 on: August 28, 2016, 05:15:16 AM »

Finally got around to finishing up the first (and biggest) part of AutoTile support: Specifying AutoTile info, transforming it when compiling a Tileset and then using it for mapping, as well as serializing and deserializing it in a reliable way.

The below example uses a testing tileset where all 47 tile permutations are defined in the tileset, so the AutoTile supports any tile neighbourhood that is possible to map.


(Click Me, I'm a gif)


And in this second one, I'm simply using the mage city tileset of the sample package. As you can see, not all connectivity states are properly mapped, because there is no matching tile specified for all situations and in the current implementation, no new AutoTile permutations are generated yet. However, the existing tiles will still be used as fallbacks where possible.


(Click Me, I'm a gif)


You can now use AutoTiles, just update the Tilemaps Core and Editor packages to the most recent version and specify the required AutoTile information in your tilesets.

And by the way, our small game jam is still running! Plenty of time to do something quick and neat Smiley
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #72 on: September 02, 2016, 11:12:16 PM »

I'll do an experiment today, 18:00 UTC where I'll work on a small GitHub issue of Duality with screen sharing and voice chat while answering questions that people might have in the process. Interested? More infos are here.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #73 on: September 14, 2016, 03:36:26 AM »

Allright guys, the Tilemaps Game Jam just ended and the short voting period begins. We have five entries and five categories to vote in, so if you have some spare time - those games are waiting for you Wink Any vote and review appreciated!
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #74 on: September 18, 2016, 07:52:48 AM »

Vote is over, jam wrapped up. Congrats to MFEProject for making rank #1 with his project "Acid Farming Simulator". I recommend playing it. It looks exactly like the name suggests Grin


You can click the above image to get to the jam results with all the entires. I've also set up an itch.io collection with a list of some Duality games that were made by the community. Let me know if I forgot yours Smiley
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #75 on: September 25, 2016, 03:11:45 AM »

As you may or may not know, we have this community chat. Nothing fancy, just a freenode IRC channel. Until now! Just flipped the switch and we're now running a Discord server instead. Can totally recommend this so far. Join us here, if you want:


You don't actually need a Discord account for this, Discord actually allows you to hang around as a guest as long as you want.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #76 on: November 20, 2016, 05:31:34 AM »

Hey there!

Back again with one of my occasional updates on Duality and related things. Coffee

A Game With Germs

First things first, I used it in a recent game jam and created a small prototype about germs and spreading colorful DNA.


(Click Me, I'm a gif)


You can find the full source code and content on GitHub if you want to take a look. It's a little rough around the edges as you'd expect from a game jam, but turned out surprisingly fun even though I spent about 30% of the time just fiddling with the metaball-germ-shader.

Hacktoberfest

In the mean time, Duality got an influx of feature requests, bug reports and pull requests mainly due to Hacktoberfest happening. Really glad it turned out this way! We fixed a lot of stuff, introduced some new features and while at it, I used the chance to do some much needed refactoring to some parts of the code base. Thanks to everyone for contributing, I do hope you all got your t-shirts Smiley

Project Structure

In the two weeks following that, I spent some time cleaning up the repository and restructuring it to be more accessible for new users and visitors. You can see the results at the repository page on GitHub: This is how it looked like before, and here is now, after the recent changes. Hopefully, it now looks a lot more like a reasonable project, and less like an unstructured mess. Hand Thumbs Up Left

Documentation

Next up is a push for better documentation. There was a lot of discussion recently as to why Duality is such an unknown sidekick without significant exposure, despite the fact that it generally receives a lot of positive feedback by people who try it and work with it. One of the reasons we identified is that except for the API reference and the Getting Started tutorial, there is a lack of resources to learn from. No articles, no advanced tutorials. Besides not repelling potential new users, having a solid documentation is also great for existing users, and especially for the Open Source aspect of the project. With the long term goal of shifting development towards a group of core developers from the community, good documentation should be a big priority.

So I spent a few hours to write wiki articles about Version Control with Duality, Using External Libraries, Handling Object Data and Writing Custom Renderers, most of which were topics that came up somewhat recently on forum and chat, or that are known to produce recurring newcomer questions. I also updated the wiki landing page: Take a look at before and after. There are probably more articles to follow.

Pro / Con List

Finally, I wrote an article about whether you should use Duality in a project. It's aims to be a honest pro / con look at the engine.
« Last Edit: November 20, 2016, 06:17:49 AM by Adam_ » Logged

Adam_
Level 1
*



View Profile WWW
« Reply #77 on: December 08, 2016, 11:41:31 AM »

The development of the v3.0 milestone has started this weekend and so far, I'm 34 commits and three closed issues in. This won't be a pace that I'll be able to keep up, but it's a start! Also, really enjoy having a bigger goal towards improvement of Duality as a whole again, which isn't just "more stuff" in some regard.

So far, it's been mostly removing obsolete API and functionality, cleaning up the legacy bits of Font resource (and simplifying them internally in the process), and some renaming. The biggest improvement so far happend to the logging system.

The big old Log class has been split up into Log, the actual log instance, LogFormat, a static class with all the formatting helpers, and Logs, a static class that manages global log instances.

Code:
// The old way
Log.Game.Write("Hey! Here, have a beer: {0}", Log.Type(typeof(Beer)));
// The new way
Logs.Game.Write("Hey! Here, have a beer: {0}", LogFormat.Type(typeof(Beer)));

All logs have now been made thread-safe, so you can safely write from whichever amount of threads you like and be sure that your messages will arrive safely at their destination.

It is now also possible to define your own custom global logs, which can be especially useful in bigger or infrastructure plugin projects. To define one, implement a class deriving from CustomLogInfo like this:

Code:
// Optional: Tag your log info with an icon to use in the editor
[EditorHintImage("YourMainNamespace.EmbeddedResources.LogIcon.png")]
public class TestLog : CustomLogInfo
{
// Provide an empty constructor that sets the logs name and ID
public TestLog() : base("Test Log", "Test") { }

// If you want to tag your log instance with additional info, define it here.
}

This is done once anywhere in your project, or any of the dependencies of your project. Afterwards, you can use your custom global log like this:

Code:
// Your custom log
Logs.Get<TestLog>().Write("Test");
// For reference: One of the default logs
Logs.Game.Write("Test");

By using a class definition for identifying your custom log, we can solve multiple problems at once: The log info class can provide configuration parameters for the log, we get all the advantages of type safety for our log identifiers and don't have to deal with strings that will fail silently when the identifier changes. If you're trying to access a custom log that doesn't exist, your code will simply not compile. No chance for errors to creep in!

Additionally, the static generic getter uses an internal trick to achieve static binding performance, rather than doing a dictionary TryGetValue. There simply is no lookup - the compiler knows exactly where to look for your log instance based on the type.

To complete the custom log support, the editor log view has been extended to recognize custom logs and provide source filter buttons for them, just the same as it does for the three predefined logs:



Finally, the API for Logs and VisualLogs has been adjusted to mimic each other, so the learning curve should be a little easier on the two.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #78 on: December 27, 2016, 11:05:23 AM »

Among other things, I moved the whole smooth animation stuff out of Duality and into a sample project. Simplifies a lot in the core and, after v3.0 will be released, you get to install a complete sample with content and everything. Here's how it looks compared to regular sprite animation:


(Click Me, I'm a gif)


Super simple, but especially neat for slowmo effects.
Logged

Adam_
Level 1
*



View Profile WWW
« Reply #79 on: January 22, 2017, 06:26:28 AM »

A quick update that will be rich in visuals (programmer art, sorry) and not so rich in text.

Game Jam Entry: Enemies


(Click Me, I'm a gif)


You can get a binary download and the full source code on GitHub.

Duality v3.0 WiP: Rendering Setups

Fixed-Viewport Rendering:


(Click Me, I'm a gif)


Fixed-Resolution Rendering (Pixel art, anyone?):



Simple post-processing effects that no longer require to manually adjust camera configurations:


(Click Me, I'm a gif)


A bloom effect involving the usual downsample pyramid (up to 1/8th), directionally separated blur, and a final combine step:


(Click Me, I'm a gif)

Logged

Pages: 1 2 3 [4] 5
Print
Jump to:  

Theme orange-lt created by panic