Good morning folks,
Recently I have been undertaking, on my own, a private project to port the AGS Editor to separate platforms. Currently I have a some what functioning, but not useful, editor that works for MAC, Windows and Linux with no source code changes required what so ever. If this works, believe it or not the code is very portable to Android and iOS. So there would be potential for this to eventually be a truly cross platform editor. Right now I am tackling one thing at a time.
At the moment all the editor I have can do is load up the game data. EG: Displaying views, text parser, inventory data, etc... but it can't display sprite data as it requires the sprite file to be decompiled. My editor will display the room numbers as it can enumerate from within the directory all the CRM Files and the script file. I have a functioning script viewer and an editor that can save, but it does not have all the features of the AGS Script editor.
If you are wondering how I am developing the engine, I am using B4J which is a VB.net style language and can run on Mac, Windows, Linux and web browser. It is 100% free. It can also use JAVA code as a module and in-line code to make it even more powerful. There is absolutely no code to change to have this work between Operating systems(Except for file handling, registry handling, etc..). It is powerful enough to make apps as a server/client, easy to replicate AGS room editing draw functions, has the ability to replicate the script editor and syntax editing and with a little help it can even be used to accept cross platform editor plugins since it can run B4J code and in-line JAVA code at run-time. The same developer has two other software editors that are near identical to B4J called B4A and B4I which is a software development suite for Android and iOS. Those are not free however. But if we chose to one day port the editor to mobile devices or tablets, it would be easy to move the software from B4J to B4A and B4i. You can check out the site here: http://www.b4x.com .
Now I wish I could work on the editor in CPP/C#, but I hardly know C# and I can do a little C++, but not enough to work on AGS in that way. However, I can totally do B4J. I think it is our best option as it is constantly updated, users are adding new library and addon's to it every day, it is cross platform with hardly any code changes. Even in C++ if we create a cross platform tool and use cross platform libraries, it would be hard to just have one developer come in and make one change and have it work perfectly for all OS. It requires tweaking. And, as the editor is in C#, I do not really see easy options to port it directly through C#. Of course I can see that several people here might resist this project of mine simply for the fact that everyone is waiting for a better structured and designed AGS which would be edited in the future. But this redesign is a long time away and, as we have been discussing, may come down to paying developers to restructure this if we could even find enough developers. So, in the meantime, maybe it would be bandaid solution, but a nice feature none the less to try porting the editor this way.
Having said all that, if anyone is kind enough to assist me, this is the tools I need:
Sprite Decompiler:
I need a tool that can be placed in a directly. When run, will search the directory for ACSPRSET.SPR(I believe that is the file that contains the sprites, correct?) and decompiles the sprite images into a sub directory called "Sprites" Then sorts them into their respective sub-directories(EG: Some users may have sorted the sprites like so: GUI, Characters, etc..). I would then need an XML file for each corresponding Sprite file that would read its properties. Finally, I would need an XML file in the Sprites Root directory that would list all the sprite directories, the included sprites and XML Files. So the file structure would look something like this:
Sprites
--SpritesStructure.XML
---GUI
-----1.JPG
-----1.xml
---Characters
-----2.JPG
-----2.xml
Once a tool is done like that, I would need a compiler that can recompile the sprite data based on that root XML File back into a sprite file.
For the Room Decompiler:
I need the tool to decompile the room files and separate it this way:
Room1
--RoomProperties.xml (Containts properties, baseline coordinates, edges, and room structure similar to sprites, etc..)
----Objects
----1.xml (Contains coordinates, properties and sprite number, etc..)
----2.xml
----BackgroundImages
----1.JPG
----2.JPG
----3.JPG
----Hotspots
----1.JPG (Or RAW Data points, etc... However it is compiled/written)
----Walkbehinds, Walkable area's, Regions in the same fashion as above... Etc..
Then I would need a tool to compile them back into a CRM File based on that root XML File.
Is this something that someone can do in their spare time for me? It seems like a hard and long task, but if this is possible, please let me know. I would love to have this tool be cross platform for Win/Linux/Mac. More ideally would be if someone could write a module in B4J where you could specify the directory for the module to decompile. If you are able to, please let me know here or PM me. If and once I were to have such a tool at my disposal, I would be able to recreate the editor for AGS. I have it in its planned stages at the moment:
Current Stage:
Loads up AGS game data
Displays and saves scripts
Stage 2:
Load up room Data
Create a basic Room editor
Stage 3:
Pretty it up a little
Add a syntax editor to the script editor.
Stage 4:
Release a test app for everyone to try
It should take no more than 2 to 3 months to get this far once I have the tools. Please note that there would still need to be something to edit Translation files and compile the game in order to be a full fledged cross platform editor. But for now, I would rather start with these tools, create something to show and then take it from there. Just an idea of extra functions I plan to add to the editor after releasing initial part of the editor:
*Replicating the full features of the latest AGS Editor
*Skinning capabilities
*A way to create a project server so that teams can work on games similarly to how they use GitHub and provide a more united way of developing.
*A Store front where users can upload templates, modules, graphics and such for free (Once the source is released to the editor, anyone can change this to also be a store that sells products if they would like).
Let me know how you all feel about this because if noone is interested, I am just going to scrap the whole project since the editor I am creating is utterly useless without being able to create sprites or rooms. Thanks!
Sorry, but to make an editor, you need to decompile existing AGS data, and want to use a proprietary programming system?
Any person that needs an editor has sources available, why would you need a decompiler?
I am sure B4 stuff is the best stuff ever, but how is an editor written in a proprietary system going to help? Isn't lack of openness exactly why AGS in the current situation?
I'm not sure what you mean. AGS has been "Completely Open source" for years. The compiler, the engine and the editor. The AGS project file itself is an XML and the scripts are .asc files which can be read with any basic text editor. However, Sprite Data and Room Data is compiled and I would require something that can decompile it or someone to write code in B4J so that it can be read.
As far as B4J... How is it any different than Visual Studio other than the price tag and the name "Microsoft" to back it up? It is a strong tool, uses Java and can do what C# does.
I'm not sure I understand what you are trying to say with your comment. My apologies for my ignorance.
Hmm, let me try to explain it better then. Second attempt :)
An AGS adventure author takes his own sprites and makes rooms, and writes them to file. Then the AGS compiler converts that to runnable form.
There is no decompiler in this process, the author has his source sprites, and ideas of rooms, and enters/converts that to AGS format, and eventually to runnable format.
You say you want to also make an AGS editor. I would expect you support the same process as above, authors take their own sprites, and make rooms with your editor from ideas in their head. You store that information in a file and the AGS compiler will further process it.
The only point where you need a decoder is when you load a file that you wrote earlier (for the user to continue editing). However, as you wrote the code that makes the file, you know the format, and thus it should be easy to write a reader that loads the data back into the editor.
As for the format of those files, there should be writers and readers available in the source code, which you can study and replicate.
I don't see how you need a decompiler anywhere in the above process.
For me, a decompiler is a tool to rip a runnable adventure, without co-operation of the original author (since he will still have the generated files from the editor, which are a far better source then dcompiled data). I don't see why you need such a tool to make an editor.
--------------
As for B4J, does it run at all useful platforms? Is it allowed to make software with it for commercial purposes (ie some AGS users write these games for a living). Does B4J come with a open source license? Major Linux distributions are into free software (free as in speech), and will want their own copies of the B4J software and everything needed to build it from scratch. They will want to give copies of it to all that want it, people should be able to extend your editor without needing to buy anything.
What happens to the B4J software when the company dies (open source software lives forever basically, eg the gcc compiler is 20+ years old, and still available, as it is all open source software. Very few companies survive that long, and you'll want to keep your editor alive even if the B4J company dies.
Notice that Visual Studio is just a plain compiler platform (I know it can do more, but that is the most important part of it). There exist other freely available compiler implementations in case Microsoft does weird things with its Studio, or in the (currently unlikely) case that Microsoft dies. In other words, no open source software dies if Visual Studio drops off the Internet, you can switch to another compiler, and live on.
How does this compare for B4J?
I kind of see where your concern is coming from a little more clearly and why you are questioning the the need for a compiler. I will see if I can explain my point of view a little better:
1. CRM files and Sprite files
To me when I say compiled, I mean that anything that takes multiple files and puts it together into a custom file format, the that means compiled. Perhaps I should use a different terminology, but that is what I mean by needing to have the room .CRM Files and the Sprite file decompiled or maybe "Decoded"? Yes, while it is true that my editor can come up with its own format and such to store this data it becomes utterly useless for AGS if it can not be converted into a .CRM or Sprite file. My idea, since we do not have a shell based compiler for AGS is to create an editor that can edit games on any platform. However, not knowing how to decode/decompile the CRM files and put them back together, any game edited with my editor would be useless. It would also render importing "already-in-progress" Game projects into the new editor without some way of seeing into those room and sprite files.
2. Lets answer some B4J Questions.. Can you make commercial apps?
- Yes. You can sell whatever you make without paying any royalties or purchasing any licenses. Completely free to use and completely free for your clients to make stuff and resell, such as making games via an AGS Editor and selling them.
3. - Is B4J free?
-Yes, completely. Nothing to pay. Can that change? Of course. But then again, Visual C# is not really free either. But according to the author of B4J, he does not intend to sell the product.
4. - What platforms will it run on?
-B4J is intended to run on Windows, Linux, MacOS, Raspberry Pi and web browsers. However, the final compilation is made into a Java runtime. So really, any system that supports the latest Java Runtime can run apps made in B4J.
5. - What is the programming language of B4J?
- B4J has a Visual Basic.NET syntax. It can also use inline Java code and you can add on modules either created in B4J or created through Java. You can run B4J code at runtime from an external file as well.
6. - Does it have a RAD Designer?
-Yes. You can create forms and designs in the internal design editor or in Java FX Editor. You alternatively can create form elements at runtime through code.
7. - Is it fast?
-Everything I have tried is as fast as anything that would run as if it were made in Visual Studio.
8. - How long has B4J been around?
-This particular app has been around since 2013/14 I believe. However, Erel and his products have been around for almost 15 years. He started with B4PPC around 2000/2001. In 2005 he started B4A and then around 2011 or so he also started developing B4i. B4J, B4i and B4A are regularly updated.
9. - Can this be ported to systems that do not support Java runtime such as Android, iOS, Windows Phone or Blackberry?
- The code is about 85 to 90% portable to B4A and B4i, so it can easily be ported to Android or iOS. The only other system that Erel is planning to support to my knowledge is B4W(Windows Phone) sometime in the future. If it follows through with the same scheme, it should also be very possible to create an almost identical app with hardly any code changes for Windows Phone. So, unlike Visual C#, this leaves the AGS Editor open to being ported to a web browser, Windows, Linux, MacOS, Raspberry Pi, Android, iOS and Windows Phone(Soon).
10. - Can we be certain that this software will be around for a long time?
-You can never guarantee anything. We can't guarantee that Microsoft, Google or Apple will still be in business next year. Nothing is a guarantee. Is there a good chance it will be around for a while? I certainly think so. Erel makes a ton of money with his software since you most of the time you have to renew B4A and B4i every two years with a fee. But once you purchase his commercial software or use his freeware software, you can sell anything you like, royalty free, for as long as you like without expiration. And since this software can take plugins written in Java or use Java FX to design forms.. even if he discontinued support, it would still be useful for years to come. And at that point, a new piece of software may be released that can be used anyway. Don't forget, the original AGS editor was made in C++ and then converted to Visual C#.
11. - Is B4A and B4i freeware?
-No, those two are not. But once you purchase one license, you can make apps with that version of the software for as long as you would like and sell it. If you wish to update to a new version after your license expires, then you need to purchase a new license. Lets not forget.. To compile Native.dll, maybe I am wrong, you need to have a commercial version of Visual Studio to do.
12. - Is B4X open source?
-No, but neither is Visual Studio.
13. - Will B4X source files work with GitHub?
-Yes.
Bottom line, I believe B4J is in the same boat as Visual C# in some area's, in others it is more advanced. In some, it may be behind. Here is what I think:
I don't believe that Visual C# is available for other platforms other than Windows. So even if, lets say B4J couldn't work on Linux for the reasons you mentioned above, neither can the Visual C# version. But at least we can run it on MacOS and through a browser on Linux. We can also easily port it to other platforms. This is not currently possible with Visual C#. It seems we need to go through lots of hacks to get it working with other platforms and then it wont run properly.
I even think about plugins.. If you were to make AGS Cross platform right now and you were to use the current plugin system, you wouldn't be able to use plugins on other platforms, only Windows. With B4J, since it supports Java plugins and running B4J Code at runtime, almost any plugin you create will run across all platforms with little to no code modification. That also means that the source code for B4J stays the same throughout any platform.
Will Microsoft stay in business forever? No. Will it stay in business longer than B4X... Yes. Microsoft is a business with stock holders. B4X is developed by one person. However, should the time come for B4J to be discontinued, I believe Erel would make the software open source. If not, the software is still extendible via Modules and Java plugins. Or... some big company may purchase it and continue its existence. So what do I believe in this? I believe B4J will be of use to us at least another 15 years.
I also haven't looked too deeply into the program, but I believe that even if B4J were to die, it would still have the Java sources to your project available. So that means that you can edit the AGS editor via Java. What else can B4J do that we may need it to do so that we can convert the AGS Editor into B4J:
-It can read and write Random Access files and byte code.
-It can read XML Files and supports many image formats and document formats.
-It can do Treeviews, list views, combo boxes, Radio buttons, text fields, etc...
-It has plenty of draw tools.
-It can read and write external files and append to files.
-Anything else we need it to do.
Is this the right tool or the perfect tool to make an AGS Editor? Maybe not. But I feel it has the advantage over Microsofts Visual C#.
Quote from: Joseph DiPerla on Sat 08/08/2015 20:09:32
1. CRM files and Sprite files
To me when I say compiled, I mean that anything that takes multiple files and puts it together into a custom file format, the that means compiled. Perhaps I should use a different terminology, but that is what I mean by needing to have the room .CRM Files and the Sprite file decompiled or maybe "Decoded"? Yes, while it is true that my editor can come up with its own format and such to store this data it becomes utterly useless for AGS if it can not be converted into a .CRM or Sprite file. My idea, since we do not have a shell based compiler for AGS is to create an editor that can edit games on any platform. However, not knowing how to decode/decompile the CRM files and put them back together, any game edited with my editor would be useless. It would also render importing "already-in-progress" Game projects into the new editor without some way of seeing into those room and sprite files.
Do I understand correct, that you basically want a fully opened format for rooms and sprites?
This is something AGS Editor should become in the future. Monkey0506 has started a work to move Room compiler/loader to C# code, which also may lead to more open format (non-compiled rooms).
Idk, what B4J is, however
Quote from: Joseph DiPerla on Sat 08/08/2015 20:09:3209 Aug 2015, 00:21
-It can read and write Random Access files and byte code.
-It can read XML Files and supports many image formats and document formats.
-It can do Treeviews, list views, combo boxes, Radio buttons, text fields, etc...
-It has plenty of draw tools.
-It can read and write external files and append to files.
-Anything else we need it to do.
Is this the right tool or the perfect tool to make an AGS Editor? Maybe not. But I feel it has the advantage over Microsofts Visual C#.
C# can do all the same... And it is now open sourced, making it possible that cross-platform C# will appear:
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx
Also - Mono.
Quote from: Joseph DiPerla on Sat 08/08/2015 20:09:32Lets not forget.. To compile Native.dll, maybe I am wrong, you need to have a commercial version of Visual Studio to do.
This is a temporary state. As we remove dependency on prebuilt native libraries, it could be compiled with 2013 Express, which is free.
That said, I am not here to force you to not make a different editor, if you like to; AGS is open, and anyone can make any tools and editors for it; simply clarifying some points.
Quote from: Joseph DiPerla on Sat 08/08/2015 20:09:323. - Is B4J free?
-Yes, completely. Nothing to pay. Can that change? Of course. But then again, Visual C# is not really free either. But according to the author of B4J, he does not intend to sell the product.
Please make a distinction between programming language and software tool implementation.
* C# is a programming language, originally designed by Microsoft, but its specification is open. It can be used anywhere. I can use a text editor like notepad or an open source text editor to write it. Theoretically, I can take its specification, and build myself a new compiler.
* Visual C# is an editor and compiler software tool implementation by Microsoft.
Programming languages are not always tied to a software implementation. I can develop and execute C# programs using an editor and Mono. I don't need Visual C# for it.
The programming language is the same everywhere, software tools differ in price and usage conditions.
Quote4. - What platforms will it run on?
-B4J is intended to run on Windows, Linux, MacOS, Raspberry Pi and web browsers. However, the final compilation is made into a Java runtime. So really, any system that supports the latest Java Runtime can run apps made in B4J.
More importantly, what are the development platforms?
Quote11. - Is B4A and B4i freeware?
I'll take "freeware" as "software you can obtain without paying money" here.
In general, the term "freeware" refers to its license conditions "you can do anything that you want with it". While this is obviously a proper open source license (it's known as WTPL), many open source licenses are more restrictive.
How much you pay for software, and what its usage conditions are, are two different things. You can pay for open source software, and you can get commericlal software without paying for it (eg trial versions, etc).
Quote(answer to 11):
-No, those two are not. But once you purchase one license, you can make apps with that version of the software for as long as you would like and sell it. If you wish to update to a new version after your license expires, then you need to purchase a new license. Lets not forget.. To compile Native.dll, maybe I am wrong, you need to have a commercial version of Visual Studio to do.
Quote12. - Is B4X open source?
-No, but neither is Visual Studio.
And here you go wrong. I don't have to use Visual Studio if I don't like Windows, or don't have money, or refuse to pay for software out of principle, or just hate the Visual Studio interface, or whatever reason I may have.
Visual studio is just one of the available options, but there are a zillion other options too. Maybe not as fancy, but they exist, and they are available for everybody without charge and they do the job.
I can decide that I like Visual Studio so much that I want to buy a copy of it. I am allowed to do that. However, it is not required. If I have no money, I can still write a C++ or C# program by using a different option. Instead of Visual Studio, I use a text editor and the g++ compiler, or the clang compiler, or the Intel compiler. If I like an IDE, I can use Eclipse. For the C# language I can use Mono. For plain Java, I can use the commercial Oracle version, or the free openjdk version.
Having free options available means I will always be able to run and modify the software, even when I am totally broke. This means a poor but genius child somewhere in Africa can use and modify the software, learn from it, and make himself a better future. This means my software lives even if Microsoft dies.
Now with B4J, it is different. I cannot do anything without a license. If I stop buying a license, or B4J dies, or decides to end this product, or raises its license prices by a factor 1,000,000, I am doomed. All my work down the drain, I can delete everything and start from scratch.
CW:
QuoteDo I understand correct, that you basically want a fully opened format for rooms and sprites?
Yes, I would like a more open format for this. But since I do not know C# or C++ well, I would love someone to write a tool that would take apart those files.
Also, I did not know about C# Being open source now. That is very interesting.
To Alberth:
I am really not sure what you are trying to achieve with your constant badgering of questions that have no bearing on the request I am making in this thread. I also seem to have answered the questions clearly and yet you keep asking for clarification and keep harrassing me in this thread about terminology and such. I am really not sure what it is you want me to say or what you are trying to discourage. And if you are trying to discourage the use of B4J, what for? I mean really, what do you want?
QuotePlease make a distinction between programming language and software tool implementation.
Why? B4J, whether a tool, an API or a programming language or whatever.. What does it matter? It is capable of creating a version of the AGS Editor so that it runs in Mac, Windows and Linux.
QuoteMore importantly, what are the development platforms?
As of now, Windows. But that may change. As of now, Visual C# only runs in windows anyway to, so what does this question matter since that is what is currently used to create the AGS Editor? B4J is not a step backwards in this regard. It just stays the same. No advantage or disadvantage. So why question this?
QuoteI'll take "freeware" as "software you can obtain without paying money" here.
Again.. I believe you know what I meant. I explained it later on more clearly. And this is the part where I am starting to think you are nit-picking just to pick an argument. So let me clarify: B4J is 100% free. Nothing to purchase. No in-app purchases. No licenses to purchases. No royalties to pay. You can do whatever you like with the software you create: Sell, give away free, etc... Your clients or users have that same freedom. NO RESTRICTIONS.
QuoteAnd here you go wrong. I don't have to use Visual Studio if I don't like Windows, or don't have money, or refuse to pay for software out of principle, or just hate the Visual Studio interface, or whatever reason I may have.
Visual studio is just one of the available options, but there are a zillion other options too. Maybe not as fancy, but they exist, and they are available for everybody without charge and they do the job.
Alberth, the AGS Editor is made with Visual C#. I was unaware that C# was recently opened sourced to the public. But as of this moment in writing, however, I am unaware of any version of this software being available in anything other than Windows. Yes, you can edit C# project and source files in any editor, but you can do the same with B4J. And at this moment in time, you need Visual C# to compile any Visual C# projects. At least since I am not aware of anyone creating a compiler out of the recently released source files. But again, like Visual C#.. B4J can have its source files edited anywhere else and then imported and compiled for B4J. In fact, I use Geany to do such things.
QuoteI can decide that I like Visual Studio so much that I want to buy a copy of it. I am allowed to do that. However, it is not required. If I have no money, I can still write a C++ or C# program by using a different option. Instead of Visual Studio, I use a text editor and the g++ compiler, or the clang compiler, or the Intel compiler. If I like an IDE, I can use Eclipse. For the C# language I can use Mono. For plain Java, I can use the commercial Oracle version, or the free openjdk version.
Having free options available means I will always be able to run and modify the software, even when I am totally broke. This means a poor but genius child somewhere in Africa can use and modify the software, learn from it, and make himself a better future. This means my software lives even if Microsoft dies.
I can't stress this enough... B4J is 100% free. No restrictions. No issues. No royalties. It is completely free! Point 11 above was in reference to B4A and B4i so that you can develop software on Android and iOS. But again, We are talking about Windows, Mac and Linux - these are completely free. And in fact, I read a thread just today where the author mentions he is thinking of open sourcing B4J in the near future(Don't know when, do not ask).
Also, again, the source files fromthe B4J project are actually Java. You can edit those files and compile them with a Java compiler. So, you do not need B4J, really, if it ever went out of business.
And as far as not being required to purchase Visual Studio.. You are correct. Actually you are not. Read CW's reply above. You still need to purchase it if you wish to compile Native.Dll which is crucial for AGS compiling.
QuoteNow with B4J, it is different. I cannot do anything without a license. If I stop buying a license, or B4J dies, or decides to end this product, or raises its license prices by a factor 1,000,000, I am doomed. All my work down the drain, I can delete everything and start from scratch.
Alberth... You misunderstand the way the license works for B4A and B4i... If you purchase a license that lasts for 2 years, you receive two years of updates of the software for free. When your license expires, you can use any version of the software(For the rest of your life, without restrictions) up to the latest version that was provided to you as part of your license. However, if someone has an older license or a newer license, they can still use the AGS Editor source files to continue editing the project with "Their" Version of the software. But whatever version you own will stay FREE for life. But again, this is for B4A and B4i. B4J is completely free for every single life form on the planet.
Alberth, I apologize if I misread your intentions. But I really can not see the need for all this badgering when in reality I am only looking for someone to work with me on a tool. That was the reason for this thread. So please clarify your standing and what it is you are really trying to achieve. Better yet.. Go to http://www.b4x.com. On the site you can download B4J for FREE. It also has a tutorial, documentation, FAQ and a forum as well as a contact e-mail for the author. Please use these resources as they can better answer your questions. Please don't take this posting the wrong way Alberth, but all I want was someone to work on a tool with me. That's it.
In my view, open source software should be open completely from day one, for any purpose that people may think to be useful, for any platform, by anybody, without needing to buy stuff from companies. Also, open source software should be rebuildable from the source by anyone, and anyone should be able to develop things further, again, without needing to buy anything.
An editor for AGS is a key piece of software for the AGS community. I don't know how much effort it contains, but it's man years to decades very soon. I don't want to risk having to throw that away just because of a license problem, or a problem on keeping it working as some key part gets lost, in say, 20 years. I have seen projects where many people invested a lot of time, but they forgot to allow free access (including further development!) to everybody else. As soon as they left (and everybody leaves at some point!) people remaining are stuck with a nice piece of work, but there is absolutely nothing you can do with it legally until a 100 years or so later, when its copyright expires.
(ie not unlike the current situation with the AGS system.)
To me, it seems better that you spend a year learning C#, or do things in plain java from scratch (ie anything that makes it truely open from the ground up at day 1), than to risk a decade of editor development by basing everything on an unknown commercial product that runs only at one operating system (for development).
But like Crimson Wizard, I cannot decide for you what to do. If you don't want to consider what happens after you leave (ie the only person that ever heard of B4J, and the only person that knows how to program in it), go ahead, have fun.
Edit: To clarify further, a thing like the AGS editor is not something you write and then you're done. People will continue to develop it continuously, until nobody uses the AGS software any more.
In other words, once you start with it, you're developing it further forever. Adventures have been around a few decades already, I don't see it end anytime soon, so a few decades easily to come. Therefore I believe it's crucial for the editor that it can be developed further without having any strings attached that you don't have in control, and may fail in 10 years from now.
Alberth, you make a pretty good argument against C#.
Ha :)
I always found it a great move by MS, develop your own language, so not only do you have users locked-in, you also get developers locked-in :D
How's that for ensuring your platform will never die?
But yeah, C# has the big disadvantage that a commercial company decides the direction, and has the lead in deciding what goes in, and how things interact with the system. It also means that non-windowsy systems will always be at a disadvantage.
On the other hand, there is Mono, and it seems to be working to some extent (never looked inot it). Mono will always be open I think. Thus if you use Mono as base implementation, you are probably fine? (No idea tbh, I haven't done C# yet, although I should try it one day.)
Ah I think I see what the real problem is here and what the real answer to what you are bringing up would be, Alberth. I think the issue we are facing is that we have proprietary file formats that belong to the AGS Editor, strictly and a compiler that is also attached to the editor. I think, like most long lasting and successful Software development tools and programming languages, the linker/buider/compiler should be its own entity. The room files and sprite data should be something more open as well.
For example, the project files shouldn't rely on a CRM file for room files or a .dat for spritefiles. These should be generic image file types that are just stored locally on the system in a directory(Sort of like how I want the decompiler/decoder tool to do). Then an XML Data file can dictate the use of those files more clearly. This opens the editing options more and doesn't leave AGS project files to be used only with the official AGS Editor. Instead, this opens the possibility for Geany, Eclipse, Visual Studio, etc.. to be able to create AGS Games. Or it can leave it for someone to develop their own editor.
The only two other problems we face is 1) The compiler needs to be separated from the AGS Editor and made into a command line tool to create AGS executables. It would also need to be ported to several other OS such as Mac and Linux. 2) The source for the AGS Engine itself also needs to be more generic, allowing for any C++ Compiler to easily compile it rather than rely solely on Visual C++. Perhaps this is possible already, but if not, maybe it is something we should look into.
Is this a more plausible solution Alberth?
Afaik my problem is that you'd like to use a proprietary piece of software as foundation of an editor, software that runs only at a proprietary Operating System for development.
I am baffled how you believe that to be of any use in an open source project, but I have said enough on that already.
I clearly fail to get that message across :(
How did you reach the conclusion that AGS has propietary file formats? Afaik they are just AGS-specific, and AGS is open source, hence the file formats would be open too.
Sure they are probably different from a general purpose format, but they're dedicated to AGS, so that's to be expected.
The only requirement is that one needs a format description, so you can write a loader and saver function for those files. Maybe eventually a different format is required, but that's a different matter.
Obviously, you cannot import a n AGS file loader from the Java library, it needs a piece of custom code, but that's not hard to write. You just read bytes from the file, and store them in some data structure, mostly.
<rant>
As for XML, euhm yeah. I am quite not a fan of XML to say the least, it's a big, overly-generic format, ASCII based (which sucks for inherently binary data such as images), and not at all readable. Loads of people believe it's the ultimate data storage format for anything, including writing programs in it. OMG, "<expr><add><literal>1</literal><literal>2</literal></add></expr>" versus "1 + 2".
The only thing going for it is that there are standard libraries for it, and loads of generic tools to rewrite, check, store, and what not. Most of that flexibility is however not needed at all.
</rant>
I can write a scanner and parser for a text file with LALR(1) grammar (which can handle most general programming languages, so quite robust) in about a day with standard scanner and parser generator tools, and then you have sane syntax tailored for the data that you want to store.
However, perhaps a binary format is much better here. All you need is a file format description, and the ability to read raw bytes from the file (and write them again, when you save a new file).
As for the other problems with respect to compiler splitting and porting, yeah, that sounds fine.
Quote from: Joseph DiPerla on Mon 10/08/2015 19:51:47
For example, the project files shouldn't rely on a CRM file for room files or a .dat for spritefiles. These should be generic image file types that are just stored locally on the system in a directory(Sort of like how I want the decompiler/decoder tool to do).
Yes, this was discussed multiple times, and this is the way to go for the AGS Editor. Some work has already started in that direction.
Quote from: Joseph DiPerla on Mon 10/08/2015 19:51:47
For example, the project files shouldn't rely on a CRM file for room files or a .dat for spritefiles. These should be generic image file types that are just stored locally on the system in a directory(Sort of like how I want the decompiler/decoder tool to do). Then an XML Data file can dictate the use of those files more clearly. This opens the editing options more and doesn't leave AGS project files to be used only with the official AGS Editor. Instead, this opens the possibility for Geany, Eclipse, Visual Studio, etc.. to be able to create AGS Games.
Like Alberth, I am baffled, how did you get an idea that you cannot read CRM files with Java or other custom Editor?
Even if you make the room into XML, it would still have particular description, specific to AGS, you won't get it read by other programs in some magic way. You would still need to study how AGS Editor works, and get data specifications.
Really, from the program's perspective there is not much difference between reading XML and custom binary format.
Quote from: Joseph DiPerla on Mon 10/08/2015 19:51:472) The source for the AGS Engine itself also needs to be more generic, allowing for any C++ Compiler to easily compile it rather than rely solely on Visual C++. Perhaps this is possible already...
Ahem.If it would not be possible already, we would not have engine ports.
Just so I do not feel as if I am going insane... Can someone who is reading all this and gets what I am saying please respond here and say "I get what your saying Joe. You are not at all insane." :-D
I think maybe I am being misunderstood and I think I thank I am misunderstanding what Alberth and CW are trying to say because I think we are all on 3 different pages.
CW, I will start by replying with you since you have a smaller reply :-P
QuoteLike Alberth, I am baffled, how did you get an idea that you cannot read CRM files with Java or other custom Editor?
Even if you make the room into XML, it would still have particular description, specific to AGS, you won't get it read by other programs in some magic way. You would still need to study how AGS Editor works, and get data specifications.
I am aware that you can read the file formats from Java, BASIC and any other programming language that supports binary reading and reading from XML, including B4J. I figured though that since everyone here would mostly know C++/C#, it would be easier for them, if there were any volunteers to do so, to write a command line tool instead. But I am fully aware that this is possible in any programming language. If someone is interested in helping me disect the CRM and Dat files one by one and translating it into B4J code, then I am more than happy to accept. Like I said, I am not too proficient in C++ or C#. So when you say it is simply matter of looking at the good, it would be the same as me speaking Italian but reading Spanish.
QuoteAhem.
If it would not be possible already, we would not have engine ports.
Good point. That was dumb of me. I completely forgot about the ports. LOL.
Alberth:
QuoteAfaik my problem is that you'd like to use a proprietary piece of software as foundation of an editor, software that runs only at a proprietary Operating System for development.
Its most likely not your fault that I am not getting the message. I think we must just not be on the same page really or maybe I am not explaining myself too clearly or my intentions for that matter. For years we used Visual C# to create the editor. Until last year, this was closed source. With the exception of this being open sourced at the moment, perhaps I might understand what you are trying to say if you explain this: "Prior to 2014, how is using B4J to create the AGS Editor any different than using Visual C#?" Wasn't/Isn't Visual C# a proprietary piece of software that runs only at a proprietary Operating system?
QuoteI am baffled how you believe that to be of any use in an open source project, but I have said enough on that already.
I clearly fail to get that message across :(
But this is what I am trying to say... B4J will produce a project file that can be edited by any editor. Those project files can be put on Github just like any other programming language. If someone does not have B4J, the project can be edited and so can the source code since B4J really uses Java and the Java source files are open and available to any user who uses B4J to see. Lastly, B4J has plans to become open sourced, like Visual C#. This is why I feel it is of use. I am honestly a little baffled as to why this is not understood or as to why Visual C# is a better alternative to this. Maybe this is one of those things where we need to agree to disagree?
QuoteObviously, you cannot import a n AGS file loader from the Java library, it needs a piece of custom code, but that's not hard to write. You just read bytes from the file, and store them in some data structure, mostly.
Agreed. See my reply above to CW.
QuoteAs for the other problems with respect to compiler splitting and porting, yeah, that sounds fine.
Whew.. At least we have this we agree on. ;-)
Quote from: Joseph DiPerla on Mon 10/08/2015 22:18:33
Wasn't/Isn't Visual C# a proprietary piece of software that runs only at a proprietary Operating system?
I feel like this should be be answered once and for all since it keeps popping up in this discussion.
YES. Visual C#
IS a proprietary piece of software running only on Windows. However, it isn't relevant for any of the points you're trying to make.
The term "Visual C#" refers to the Visual Studio implementation of C#, which neatly packs compiler, debugging, code editor and a bunch of other tools together. But this does not mean that you are restricted to using Visual Studio, in fact a C# project is interchangable between the following IDEs of the top of my head(with limitations).
- Visual Studio
- MonoDevelop
- SharpDevelop
- Xamarin Studio
Both MonoDevelop and Xamarin Studio runs cross-platform, that is Windows, Linux and OS X. MonoDevelop is even open-source(https://github.com/mono/monodevelop). And thanks to Mono(
which has been mentioned several times now) you can also build and run programs developed in C# on other platforms than Windows. http://www.mono-project.com/ Also open-source(https://github.com/mono/mono). Granted, it is true that the AGS Editor cannot compile to non-Windows or be opened in other IDEs, but this is the result of project-specific implementations(i.e. it's not Mono-compatible) and is therefore not a valid argument in the C# vs B4X discussion.
I think a lot of the confusion is caused by the constant use of the term "Visual C#" in the wrong context, people usually say "C# .NET" for Windows programs made with C# and "C# Mono" for cross-platform programs made with C#. Almost every statement in this thread arguing against C# is based on that it doesn't have cross-platform support, which simply isn't true.
Quote from: Joseph DiPerla on Mon 10/08/2015 22:18:33
I am honestly a little baffled as to why this is not understood or as to why Visual C# is a better alternative to this
Joe, just like CW and Alberth I do not wish to discourage you from this project, but if you're serious about making the editor compatible with multiple platforms I believe you are better of teaching yourself C# and devote your workload into making the already existing code-base Mono-compatible. If you're familiar with C, C++, Java or any programming language with similar syntax it should take only a couple of weeks to get familiar with the language(at least that was my experience). Starting over with a completely new project is a huge project, and your conclusion that B4X is a better option appears to be based on false assumptions on what C# can and cannot do. Based off your own arguments for B4X, C# does everything equal or better.
Joseph, I believe Allegro is used to do all the image stuff. So you would probably want to find a Java binding for Allegro (http://jallegro.sourceforge.net/) or alternatively find another graphics lib with java binding and write wrapper functions to emulate Allegro.
I have been a long time advocate of Qt (http://www.qt.io/) for this purpose. It has it's own built-in graphics library, it's open source LGPL and commercial, runs on Win, Linux, MAC, and more recently mobile platforms as well.
Quote from: Joseph DiPerla on Mon 10/08/2015 22:18:33Alberth:
QuoteAfaik my problem is that you'd like to use a proprietary piece of software as foundation of an editor, software that runs only at a proprietary Operating System for development.
Its most likely not your fault that I am not getting the message. I think we must just not be on the same page really or maybe I am not explaining myself too clearly or my intentions for that matter. For years we used Visual C# to create the editor. Until last year, this was closed source. With the exception of this being open sourced at the moment, perhaps I might understand what you are trying to say if you explain this: "Prior to 2014, how is using B4J to create the AGS Editor any different than using Visual C#?" Wasn't/Isn't Visual C# a proprietary piece of software that runs only at a proprietary Operating system?
First the confusion of Visual C#.
ChamberOfFear pretty much explained it all. You have to distinguish between programming language C# and Java, and tool implementations Visual C#, and B4J.
You should see the Java language and the C# language as equivalent, and the B4J software tool and Visual C# software tool as equivalent.
B4J can be used for development at Windows only, and deployed to several targets.
Visual C# can be used for development at Windows only, and deployed to Windows only,
unless you take the C# source files, and use the Mono program instead, which allows development at several platforms, and deploys to several platforms.
Now in my view, the latter part is the crux. I have a free and open alternative to the Visual C# program, which makes that C# source code will survive if Microsoft for whatever reason decides to drop Visual C#.
Next, your question.
You are fully correct that C# was a very closed language. Mono existed long before 2014 though, but never mind.
If I would have been here when people decided to use C# for the AGS software, I would have written the same kind of posts that I am writing today. In my view, it's just plain stupid to tie yourself down to a commercial platform that you don't control. Both B4J and Microsoft will drop their product at the moment it doesn't give enough revenue. They will alter their course when it gives them more money. If a bunch of AGS software developers gets into trouble, well, you can buy our next-generation solution for $$$. You don't have money? Oh well, bad luck for you. Good bye.
However, I arrived here somewhere last year or so, and there was already a huge pile of C# code. It's pointless to try talking people away from C# at that point. The project will have to live with the decision to go C#.
@RickJ: I pondered about your remark, and I still think you are correct. However, if you want to make a nice cross-platform Gui application, there are not that many options available to you.
There is
- Java Very cross-platform, I think it should work, except the language is a bit meh. At least I constantly run into silly unsupported edge cases in the language that limit me in writing really nice solutions.
- C# Mono seems to get some traction now, but I think it's still almost unused language outside the Windows domain. No idea how good it is for Guis, but given its origin, there probably is stuff for Guis.
- C++ Good cross-platform support, language is complicated, and the big question is the Gui library. I think only the GTK and Qt libraries are useful to consider, personally, I'd go for Qt every day of the week.
None of the options is a clear winner imho.
I think the main problem here is that you started to mess two problem into one:
1) Making game sources kept in open format;
2) Writing the AGS tool in another programming language.
This, and the reasons you provided, caused general confusion, at least for me.
Quote from: Joseph DiPerla on Mon 10/08/2015 22:18:33
This is why I feel it is of use. I am honestly a little baffled as to why this is not understood or as to why Visual C# is a better alternative to this.
Because we already have a full Editor made in C#?
Because most developers here know C++/C# better?
Does not that mean, that it would be easier for them to make a a) stand-alone compiler, b) open game project format, while keep working in C++/C# language?
I
suppose that you knew about some problem that you cannot solve with current instance of AGS Editor, and instead of asking around on "how these problems could be solved" you invented the B4J solution, probably because you knew B4J better.
How you may proceed in this situation:
1) Make a list of things that you do not like in current Editor.
2) Discuss these things on forums to see, how these problems could be solved.
Maybe some of these problems are not big problem at all, but just lack of Editor feature, which we did not have a chance to implement?
EDIT:OTOH, maybe you simply want to write your own tool on B4J yourself for your own reasons with no other alternative. Well... in such case all this discussion has side-tracked too much.
Quote from: Alberth on Tue 11/08/2015 06:36:27
- C# Mono seems to get some traction now, but I think it's still almost unused language outside the Windows domain. No idea how good it is for Guis, but given its origin, there probably is stuff for Guis.
Unity uses Mono. Unity is incredibly popular, so I think your statement here is incorrect. It is vastly used outside the Windows domain.
For Guis, Mono supports both WinForms and Gtk#.
Could we stop talking about other IDE's and framework, and focus on how to make CRM format more open, directly in the game engine/Editor?
Quote from: Monsieur OUXX on Mon 24/08/2015 13:19:14
Could we stop talking about other IDE's and framework, and focus on how to make CRM format more open, directly in the game engine/Editor?
CRM = room properties + room background images + compiled script.
Open format: room properties as XML (inside Game.agf or in similar separate file), room background and region masks either in XML or located nearby as bmp files, scripts: we already have ones as *.ash / *.asc pair.
Editor should only work with open format all times. CRM only created on user request or game compilation.
Editor already has proper serialization mechanics. I think rooms are serialized in XML too, just not all of the data saves there. One needs to investigate what is remaining to make XML serialization complete.
There is really not much more in here. (Except for importing existing CRMs for backwards compatibility and restoring projects, which monkey0506's code should be doing in theory)
There is a RoomLoader.cs (I can't remember the exact name right now) class in monkey's multiroom branch, that does 90% of the work. It's not included in the project though, so I don't know if you've noticed it. I'm not sure if it's reliable or not (I can't get monkey to answer at the moment)
Quote from: Monsieur OUXX on Mon 31/08/2015 13:13:05
There is a RoomLoader.cs (I can't remember the exact name right now) class in monkey's multiroom branch, that does 90% of the work. It's not included in the project though, so I don't know if you've noticed it. I'm not sure if it's reliable or not (I can't get monkey to answer at the moment)
That could work, although I remember I did not like the way it deals with aligned structs reading.
Regarding the class not being included into solution, it is possible that monkey was testing this class in a stand-alone project.
In any case, it should be extracted and tested in active development branch, not in old "develop" branch; this may require fixing something.
And I suggest to continue this discussion in correct thread; this is Joseph's thread where he wanted to discuss his own tool idea.
Now that you're a mod, you can, by the power vested in yourself, split the thread if you think it belongs in a separate topic. ;)