A thought occurred: How about AGS for Unity?

Started by Joseph DiPerla, Fri 23/05/2014 05:09:33

Previous topic - Next topic

Joseph DiPerla

I know this sounds crazy, but I have been working with the free version of Unity3D and I am getting used to it. It takes a little learning, but I am getting the hang of it now and it really is quite something. Especially when it comes to porting. I was able to get all my little test projects(Albeit crappy with no real purpose- just for learning) to work very well on my Android device, my brothers iPhone, My windows/Linux Box, my friends Mac and on the Blackberry/Windows Phone 8 emulators. I didn't have to change any code to make it work on either, at least not for what I was doing anyway. Unity accepts plugins of all kinds (Look at Adventure creator) that can do so much with its games and tons of assets that are real nice. Unity is tailored, whether intentionally or not, to work well with 3DS files, Blender, Maya and Reallusion products.

Now before you think I am nuts, even though you probably all do already, we had discussed the option of creating AGS from scratch. Why not start with this? One development team can work with the old AGS to add support for playing older games and possibly porting to a few other OS just so we have something that can play our old AGS Games. Perhaps this team can even collaborate with SCUMMVM. Or if this team would like, they can begin porting AGS to run within Unity if they really wanted to.

However, another team can begin working on creating a new AGS in Unity. My friend was showing me Adventure Creator for Unity and I just kept thinking that AGS could do this. Now hear me out on this. I think I am on to something. As I will mention again later on, Unity makes a perfect platform for AGS to be developed on as it already lays the groundwork for us when it comes to Graphics, physics, logic, compiling, etc... You can read XML Files which the .AGF files are. You can create drawing and editing plugins within Unity. Unity has a dialogue system which can be easily crafted to match ours. Unity can create custom GUI's which we can turn to our adventure to make Adventure GUI's. Unity even uses C# as a scripting Language which our current AGS Editor is made in!

So then if we go this route, why can we call it AGS? Is it REALLY AGS Then??? The answer is YES. The reason is Simple. Because we make it so that it mimics 2D game creation just as AGS 3.3 and below did, even allowing our project to import AGS projects into Unity and continue game creation from there. We call it AGS because it will be a free plugin. We call it AGS because the plugin will make the interface look like the current AGS editor. We call it AGS because it is worked on by the AGS community. We call it AGS because it will still be Open Source. Basically, even though we would need to learn a little about the Unity Interface and set up, the rest will be exactly identical to AGS in every way.

What are the pro's and cons of this??? Well...

Cons:
Unity will only allow you to sell games royalty free if you make less then $100,000 in a year. Then again, if you make $100,000 within a year, you better buy the darn license!
Unity takes a little bit of time to get used to.
Unity will not have AGS Script capabilities without it being hardcoded into the plugin.
The AGS Development team may need a little time to learn Unity and plugin development.

Pro's:
Unity Editor is available for Mac and Windows
Unity's Engine is available for Mac, Linux, Windows, Android, iOS, Blackberry, Windows Phone 8, X-Box, PS3, PS Vita Beta, Nintendo Wii, Flash(Although this may be discontinued in version 5) and the web. All that with little effort to port your game.
All the main graphical features are already taken care of (Shaders, resolution, Physics, etc...)
Unity can make use of plugins and extensions(Such as LUA plugins, pathfinding tools, GUI designers, etc..).
Unity is completely free to use unless you make $100k.
Unity has an Asset store which a user may buy or sell assets royalty free.
Unity supports custom Scripting called UnityScript as well as Monoscript, Javascript, C# and Boo.
Unity has over 2 million forum users which can aid adventure developers much how the AGS forums have.
Unity already has many other features hardcoded that AGS has, but just needs to be tweaked into an interface we are familiar with(Scripting, pathfinding, dialogues, GUI's, Translations, Voice files, etc...)
With what Unity supports, AGS has potential for growth (A real Particle system, Camera tools, 2.5D support, etc..)

I know this sounds crazy, but I am just trying to think outside of the box. I think we really have something here. I know the odds of this happening are slim to none. I probably will be flamed for it here too... but I would regret not trying. What do you all think about that? Is there potential for this?
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Calin Leafshade

The scopes of AGS and unity are completely different. This simply isn't a viable idea if AGS is to stay a hobbyist tool.

Billbis

Agreed with Calin.
Furthermore, I hate being that guy, but Unity is closed source and commercial. They can stop making a free version whenever they wish. They can also remove a feature we need if they want.

TheBitPriest

I thought Adventure Creator basically was AGS for Unity, or are you thinking more about the cost than the functionality?   

...and ditto to what Billbis says.  Now that AGS is opensource, why go back?

Joseph DiPerla

I was thinking on a broader scale...
1) more resolutions
2) no numbered limits
3) already set to port to other OS
4) more stability with an already in place engine that uses OpenGL and direct
5) more extensible plugins.
6) an editor for Mac
7) and yes , because it is free too.

Even if unity removes a feature or their pricing plan, you can still keep it going for Unity4. I don't know. Thought I had something going here for a sec...
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

dbuske

I find Unity to be annoying and runs horribly.
What if your blessings come through raindrops
What if your healing comes through tears...

juncmodule

I created this a while back:

http://keptosh.com/downloads/adventure-game-example/adventure-game-example.html

Basically, I'm approaching it using concepts I learned from AGS. Specifically, what this demonstrates, is walk-behinds (see below).

It was my intention to create a template game with a set of instructions that would be written with AGS users wanting to make the move in mind. I set up a list of basic functionality (see further below) that I wanted to achieve. I have kind of moved back and forth on the project and not really touched it in about two months. I think what you are looking for would certainly be possible, but also a rather large project. What I have built here is pretty simple and could be completed fairly quickly. It definitely walks away from being a part of AGS though. I could see it as a first step toward realizing your goal, while also generating interest in the larger project.

I went ahead and made a slightly older version of the project available on Github:
https://github.com/mitchellshelton/AdventureGame

Please let me know if you do more with this.

Code: ags

using UnityEngine;
using System.Collections;

/**
 * Player controller and behavior 
 */
public class Ego : MonoBehaviour {

	// Speed of the player
	public Vector2 speed = new Vector2(1, 1);

	// Store the movement
	private Vector2 movement;
	private float egoY;
	// Use this for initialization
	void Start () {


	}
	
	// Update is called once per frame
	void Update () {
		// Retrive axis information
		float inputX = Input.GetAxis("Horizontal");
		float inputY = Input.GetAxis("Vertical");

		// Movement per direction
		movement = new Vector2(speed.x * inputX, speed.y * inputY);

		// Create a dynamic sprite sort order for object layers
		// Get the Character Y position
		egoY = transform.position.y;
		// Set the sort order based on the Y position
		if (egoY <= 2.0 && egoY > 1.9) {
			GetComponent<SpriteRenderer>().sortingLayerName = "0";
		}
		else if (egoY <= 1.9 && egoY > 1.8) {
			GetComponent<SpriteRenderer>().sortingLayerName = "1";
		}
		else if (egoY <= 1.8 && egoY > 1.7) {
			GetComponent<SpriteRenderer>().sortingLayerName = "2";
		}
		else if (egoY <= 1.7 && egoY > 1.6) {
			GetComponent<SpriteRenderer>().sortingLayerName = "3";
		}
		else if (egoY <= 1.6 && egoY > 1.5) {
			GetComponent<SpriteRenderer>().sortingLayerName = "4";
		}
		else if (egoY <= 1.5 && egoY > 1.4) {
			GetComponent<SpriteRenderer>().sortingLayerName = "5";
		}
		else if (egoY <= 1.4 && egoY > 1.3) {
			GetComponent<SpriteRenderer>().sortingLayerName = "6";
		}
		else if (egoY <= 1.3 && egoY > 1.2) {
			GetComponent<SpriteRenderer>().sortingLayerName = "7";
		}
		else if (egoY <= 1.2 && egoY > 1.1) {
			GetComponent<SpriteRenderer>().sortingLayerName = "8";
		}
		else if (egoY <= 1.1 && egoY > 1.0) {
			GetComponent<SpriteRenderer>().sortingLayerName = "9";
		}
		else if (egoY <= 1.0 && egoY > 0.9) {
			GetComponent<SpriteRenderer>().sortingLayerName = "10";
		}
		else if (egoY <= 0.9 && egoY > 0.8) {
			GetComponent<SpriteRenderer>().sortingLayerName = "11";
		}
		else if (egoY <= 0.8 && egoY > 0.7) {
			GetComponent<SpriteRenderer>().sortingLayerName = "12";
		}
		else if (egoY <= 0.7 && egoY > 0.6) {
			GetComponent<SpriteRenderer>().sortingLayerName = "13";
		}
		else if (egoY <= 0.6 && egoY > 0.5) {
			GetComponent<SpriteRenderer>().sortingLayerName = "14";
		}
		else if (egoY <= 0.5 && egoY > 0.4) {
			GetComponent<SpriteRenderer>().sortingLayerName = "15";
		}
		else {
			GetComponent<SpriteRenderer>().sortingLayerName = "0";
		}

	}

	void FixedUpdate() {
		// Move the game object
		rigidbody2D.velocity = movement;
	}
}


Code: ags

Unity3D Custom 2D Adventure Game Template

Walk Behinds
Walkable Areas
Character Movement
  Right
  Left
  Up
  Down
  Collision Detection
Animations
  Walk up/down/left/right
  Pick up high/mid/low
  Sit down/stand up
  Lay down/stand up
  Death
  Hit
  Throw
  Talk
  Misc dance/wave/etc
Inventory
Dialog Trees
Score
Save/Load
Interaction
  Button Interface
    Look
    Walk
    Talk
    Interact
  LucasArts Interface
    Give
    Open
    Close
    Pick up
    Look at
    Talk to
    Use
    Push
    Pull

Joseph DiPerla

Sorry for rehashing this thread. But I was wondering if we can go back and touch on this a bit more. I was using Smile Game Builder and realized that the functionality and development ease it has is amazing. I used an RPG Maker on Unity and realized that I utterly hated it. However, SGB only compiles to Windows. But it also has an exporter to Unity. I was able to export my project effortlessly and it worked real well from Unity compilation. There was hardly any difference in game play and feel and it allowed me the option to play my project on Mac, Windows, Linux or mobile.. even console if I Wanted to.

My point is.. What about considering Unity as something to use along side AGS? Perhaps rather than focussing on working ports for each OS separately, maybe we can make a Unity exporter so that we can continue to use our favorite AGS Editor and just export and compile in Unity. I don't know. I think it's less of a project than making a full AGS engine and editor asset for Unity like adventure creator. Instead we are simply recreating the engine basics.

Just a thought. Maybe it's not worth the effort if a team is porting to SDL anyway.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

thedaemon

Quote from: Joseph DiPerla on Wed 06/06/2018 00:48:32
Instead we are simply recreating the engine basics.
Which is simply a port. hehe

I tried the Adventure Game Creator for Unity, but came back to Love2D and AGS. They are just much easier to get going for me.

eri0o

Unity runs horribly in ALL my Computers. I have Win10, Ubuntu and OSX. ALL are i7 with 8GB or 16GB. Also Unity isn't open source. I vote for Unreal if there is a need for building on top of something else.

Crimson Wizard

#10
Quote from: Joseph DiPerla on Wed 06/06/2018 00:48:32
My point is.. What about considering Unity as something to use along side AGS? Perhaps rather than focussing on working ports for each OS separately, maybe we can make a Unity exporter so that we can continue to use our favorite AGS Editor and just export and compile in Unity.

Is not it what XAGE is intended for (more or less)?

Joseph DiPerla

My understanding was that Xage was a different engine that can import ags games, but not completely. Also, Xage isnt an official branch of ags. As such we dont know when it will be released or if it will be free. I am definitely intrigued by it and look forward to it. But i was thinking more along the lines of age.seccia.com or smile game builder: editor made in C#, windows engine in c++ and/or unity and the engine ports in Unity. I even wouldnt mind seeing it export to javascript using pixi.js phaser.js or babylon.js honestly.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Crimson Wizard

#12
Well, trying to consider this proposal seriously, I do not like the idea of doing that instead of our ports, as you noted
QuotePerhaps rather than focussing on working ports for each OS separately, maybe we can make a Unity exporter

The ports are already existing, they are using same shared engine code and running engine natively, which means 100% match of game process on each system, at least in game behavior.
Moving to SDL (which is underway) will hopefully make these ports working better and easier to maintain, with less amount of coding neccessary.

Meanwhile, exporting to Unity is an interesting project with certain potential in it, but would require serious amount of work coding game logic in the new system, where graphics work differently, sound works differently, input works differently, and where we have nearly zero control over performance on particular OS.

In other words, if there is an actual interest in such project, sure, maybe there will be people willing to help. But I would not recommend dropping current ports development in favor of it.

Joseph DiPerla

Im trying as a personal attempt to recreate ags using phaser.js. I think some of the hickups i will encounter include using ags script, multiple walkable areas etc.. maybe i will use a parser generator. My point being, maybe an exporter to js is much more feasible.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Crimson Wizard

#14
Quote from: Joseph DiPerla on Wed 06/06/2018 19:22:13
Im trying as a personal attempt to recreate ags using phaser.js. I think some of the hickups i will encounter include using ags script, multiple walkable areas etc.. maybe i will use a parser generator. My point being, maybe an exporter to js is much more feasible.

Sorry, I am not sure I understand your meaning, "exporter to js is more feasible" than what? I mean, what is this exporter supposed to do?

SMF spam blocked by CleanTalk