Development IDE collaboration
I was wondering if other people making development IDE's (MetalBrain, LCD , Claus Jahn and Carlinski as far as I know) would be interested in combining talents to make an all new development IDE?
I'm interested in experimenting with C# or managed C++.
I would like to create a new version of TommyGun but with more flexibility and additional support for script based plugins for people to extend it.
I would not call it TommyGun as it would be a separate new application.
But I would like to use some of the lessions I have learnt from TommyGun.
My main interests for such a new project would be:
1) Plugin based - Users can easily extend the application via C# plugins or use the built in C# compiler to write a simple script based plugin.
2) Machine independent. No machine specifics are coded in the application.
All machine specific information is stored in a data file (eg. xml file) - This allows the application to be extended for other machine types by just adding a new machine defintion file.
3) Main components:
* Graphic editing (Sprites, Tiles, Fonts ...)
* Sound editing (Music, Effects ...)
* Level editing (Map, Levels ...)
* Code editing (C, Asm, Forth ...)
* Debugging (Integrated emulator and debugger)
There is a heap of developers out there in the Speccy community and even more in other communities like MSX.
So would it be possible to work as one on a dev tool we could all use?
For Graphics editors we have ZXPaint (Claus Jahn) and SevenuP (Jaime Tejedor G?mez) which are both great paint editors.
For Sound there is Vortex Tracker 2 (Sergey Bulba)
Level editing - well there is TommyGun and possibility Mappy?
Code editing - there are heaps of code editors out there.
Emulator/Debugger - Well lets just say that having Marko and co. onboard would be a real bonus.
We have many people who seem to write specific types of tools - graphics, sound etc.
It would be best if they could write that major plugin for the application.
Each major plugin would also need to support child plugins.
I would be happy to supply an design overview for the whole thing and also the initial application skeleton and main plugin skeletons.
My goal is to combine all the specific applications into one seemlessly integrated application where all the components work together to help create a more productive and useful environment.
I'm probably been a little too over enthusiastic about all of this - it been the start of a new year and all.
Anyway - the offer is there - any takers?
Oh and the project would need a name to satisfy:
1) Platform independence
2) No zx-spectrum or any other machine references
3) Catchy
I'm interested in experimenting with C# or managed C++.
I would like to create a new version of TommyGun but with more flexibility and additional support for script based plugins for people to extend it.
I would not call it TommyGun as it would be a separate new application.
But I would like to use some of the lessions I have learnt from TommyGun.
My main interests for such a new project would be:
1) Plugin based - Users can easily extend the application via C# plugins or use the built in C# compiler to write a simple script based plugin.
2) Machine independent. No machine specifics are coded in the application.
All machine specific information is stored in a data file (eg. xml file) - This allows the application to be extended for other machine types by just adding a new machine defintion file.
3) Main components:
* Graphic editing (Sprites, Tiles, Fonts ...)
* Sound editing (Music, Effects ...)
* Level editing (Map, Levels ...)
* Code editing (C, Asm, Forth ...)
* Debugging (Integrated emulator and debugger)
There is a heap of developers out there in the Speccy community and even more in other communities like MSX.
So would it be possible to work as one on a dev tool we could all use?
For Graphics editors we have ZXPaint (Claus Jahn) and SevenuP (Jaime Tejedor G?mez) which are both great paint editors.
For Sound there is Vortex Tracker 2 (Sergey Bulba)
Level editing - well there is TommyGun and possibility Mappy?
Code editing - there are heaps of code editors out there.
Emulator/Debugger - Well lets just say that having Marko and co. onboard would be a real bonus.
We have many people who seem to write specific types of tools - graphics, sound etc.
It would be best if they could write that major plugin for the application.
Each major plugin would also need to support child plugins.
I would be happy to supply an design overview for the whole thing and also the initial application skeleton and main plugin skeletons.
My goal is to combine all the specific applications into one seemlessly integrated application where all the components work together to help create a more productive and useful environment.
I'm probably been a little too over enthusiastic about all of this - it been the start of a new year and all.
Anyway - the offer is there - any takers?
Oh and the project would need a name to satisfy:
1) Platform independence
2) No zx-spectrum or any other machine references
3) Catchy
Post edited by Kiwi on
Comments
I'm very bad with names, but RIDE would be nice. R from Retro, of course :)
Retro-Independent Digital Environment-Emulator (if it emulates s-or-o)
Alrighty, RIDEE, right, then. (arrt!)
Mongo/Mungo - reuse of trash aka creative recycling ;)
Making good re-use of our old machines :D
Cyborg - From a speccys perpective this software would be from the future ;)
Loosely based on the fact that cyborgs are usually from the future.
That's neat!
https://twitter.com/bobsstuffgames
https://www.facebook.com/bobs.stuff
http://www.bobs-stuff.co.uk
Spectrum
Totally
Retro
I
D
E
1) The assumption that people will want to write plugins using a script using C# or whatever and are willing to spend their time and energy to first learn such a script.
2) No one actually "collaborates" (in every sense of the word) on "collaborative projects". :)
Having said that it should be interesting to see how the talented and experienced folks from the speccy community respond. I'll shut up now.
Bytes:Chuntey - Spectrum tech blog.
Still be interesting to see how it pans out though - but I fear that Arjun is right.
D.
As for me:
Back when I started coding SevenuP, the only similar tool was Santiago Romero's SpecDraw, a ZX editor that could output the data as ASM or C code, which I thought was a very good idea, but I didn't like the fact that the code's format was fixed, and besides Santiago had abandoned the development of that tool shortly after the first beta, so I made my own. Right now it covers all my needs (and the needs of several users who suggested several additions or changes), and paired with the ever shrinking free time, I'd like to dedicate myself to code new spectrum games rather than even more tools to make them. And I don't feel the need for an IDE to rule them all, an IDE to find them all... (you know how it follows...). I work well without any IDE, and don't miss it.
I coded SevenuP as multi-platform because, apart from pondering a possible move to Linux (I still ponder :lol:), I didn't want to force anyone into using a certain OS if they want to use my tool. Coding for a certain IDE sounds like something even worse.
As for other coders:
You know how the saying goes: "Too many cooks spoil the broth". You want to experiment with C# and make scripts with it, but every coder has their favourite set of tools, and not everyone loves the Microsoft ones. I'm not sure how the whole plugin thingie would work, but integrating every part together might not be easy.
Finally, for the target user base:
I haven't heard too much people clamoring for an unified multi machine IDE. We at Computer EmuZone Games Studio would probably use it (specially na_th_an), and maybe some other ones, but I think most retro development groups & coders only develop for a certain system. And then there's the fact that the GUI will probably not please everybody.
So, if you finally manage to do it (with or without collaborators), it could be cool, but IMHO it's way too much effort for too little gain.
True - but most people just stick with what they have which is a bunch of little programs that do some of what they want most of the time.
No use in trying to give a community better tools if they don't want it.
Point taken!
But you are all right - basically too much effort for people who don't want anything better than what is already available.
Cheers and thanks for the fish - Bye!
I would probably write plug-ins at some point too if this sort of project were finished.
Write games in C using Z88DK and SP1
Although it is a Microsoft language, it is actually very well designed and implemented and in many ways, is what Java should have been.
It is also cross platform. Developments such as Mono (Linux reverse engineered version of .NET) are very solid and so there should be no problems running apps there. I don't know where Mac OSX stands with it however.
I am a C# developer and after taking the bold step from C/C++ a few years ago and development time has been much reduced and bugs far far fewer.
I do however agree with Arjun re: developing collaboratively. I would be very difficult as everyone is working in their spare time but getting the right design agreed up front does require a good written spec. to be drawn up and revised first.
I would suggest that the project is "open source" (and you may well choose it to be) but bear in mind, if people start forking the code, it becomes a nightmare to manage versions and revisions.
I wouldn't go too overboard with the "open plugin" idea either. You could spend all your time just developing that part to make it open enough yet well integrated. I love the ZX Modules apps but personally, I would prefer to have them all in a single installer (possibly as optional components). The download size for a complete installer wouldn't be that big and it would be much faster to install them all in one go.
These are my thoughts. I would be happy to help out (when I can) but bear in mind that working as a group can be complicated.
Since Tony has suggested and put forward the first thoughts and ideas I would recommend he be 'team leader' and coordinates the project.
I would love to be involved and feel I am gaining great knowledge and experience from writing my own emulator (still 'coming soon'!!).
I would like to see a specification written first that we're all agreed upon, let's not up like TZX where people refuse to implement certain parts because they think they're unnecessary or badly thought through.
I use Java in my job and have some basic skill with C++.
I don't want to get into a language debate.
I stipulated C# at the beginning and I'll stick to that for now.
You can get a free version of the C# compiler here http://www.microsoft.com/express/vcsharp/
If your not happy with C# or microsoft products then I guess this project is not best suited to you.
As for a tech spec, I have started one already.
I have no idea how long it would take me to finish it as I have 2 documents to write.
The first is an application framework specification describing how the application is structured. Including the plugin architecture, data exchange and other application features.
The second is the actual IDE application specification which includes what the GUI framework consists of and all the main plugins (such as editors for images, maps/level, sounds, code and an emulator/debugger) and each main plugin also consists of different sub or child plugins.
Lets all just wait and see how things turn out after I finish the tech specs and if anyone is then still interested in joining the team then we'll take it from there.
The project will be OpenSource - it has to be if many people are going to be working on it.
Initially though if the project does start then we will start with a team of 3 or 4 people only.
Nice to see that you're active again :) Although I'm not working on an IDE right now, I was several years ago and developed it using Delphi. I'm more than happy to be involved in a C# project as I'm starting to use it more and more (especially with the XNA library). I have worked on other collaboration projects before using Sourceforge and Tortoise for the source control.
I don't plan to do much this year so I will have a reasonable amount of free time.
Thanks Ian - It would be great to be working with you again. :)
This time actually coding on a project together.
I now have most of the Application Framework tech document done and will be working on the IDE tech document over the next few days.
I will post the documents on my web space within the next few days for all to review.
If you are using C#, then you might as well use the C# 3.0 specification for application plugins. It's exceptionally well designed and would dramatically reduce the amount of time you'd need to spend writing code to manage plugin loading/backward compatability etc.
Thats ok - I think we would have enough supporters ;)
Also MetalBrain on the subject of too much effort and not enough gain.
I think the gain is not just in rewarding the community with another application that they may or may not use but in doing the actual coding and learning from it.
Writing a toolset like the one I purpose is not easy - I agree.
But this kind of coding is what I would like to continue using in my profession as Lead Tools Programmer for a games company.
For me personally it is a way of experimenting with new ideas and one of the best side effects is that the retro computer development community could benefit from mine and others work.
Sure I would get more reward from writing a 3D World Editor that could take 3DMax models and build a world using them that people with DarkBASIC could use.
But I write 3D editors for a living; I just want to write something that others may enjoy in a more niche environment - sure no one's really crying out for an all in one IDE - probably because they don't think its possible - oh and it would be too much work.
I don't think people are crying out for more emulators either - but does that stop some people from creating new ones - No - they do it because they want to.
Life isn't meant to be easy - and I believe that programming challenges shouldn't be either.
You don't learn anything unless you push yourself to do better than you have done before.
If people are not interested in learning anything then they can continue doing what they are doing - nothing!
I have a set of C# plugin code already running but if 3.0 or 3.5 have it as a feature then I would definitely consider that instead
I'm off to read the MS web site now....
Its .NET 3.5 that has the new AddIn namespace available and it looks like the only thing it doesn't handle is automatic reloading of AddIns if they change.
But it does add support for backwards compatibility - which the plugin classes I would of used didn't support natively.
But this is only an issue when you plugin/AddIn interface contract is changed.
This new AddIn stuff means I have to redo my Application Framework document :(
i don't miss an ide to code speccy games:
-pasmo assembler
-zx paintbrush
-some utilities i coded to generate compiled bitmaps and organize sprites structure in speccy format.
When i need an extra i write my own windows utility, no friendly, no manual, no pretty.
i think doing a good ide has a lot of work... community will use it?¿¿¿
Good luck, anyway!
As Kiwi pointed out earlier, this new IDE would enable games to be written for many different computer formats. It could be that some of these computers don't have the great utilities that the Spectrum does. Lots of the people on this forum have probably been writing code for a long time and have found the applications they like and stick with them. There may be new coders in the future that would prefer an "all in one" IDE rather than installing / learning a bunch of applications. Of course Kiwi's idea won't appeal to everyone but I'm sure the team that will be created will take on the task as they like a challenge, want to code something different or maybe just to develop their skills in a new way.
I'm sure lots of people are looking as Visual Studio 2008 and saying "I could do what I want with Visual Basic 4 but why would I want to ?". All the programs you use are great programs but why wouldn't you want to use something better, something that you could configure and add to so that it does exactly what you want.
With something like Visual Studio, I realise that there are benefits to having a tightly-coupled GUI designer and code editor, because there are objects, labels and references that they can share to make the experience more seamless - attaching code to GUI events, code autocompletion, that sort of thing. I can't see any equivalent ways that a graphic editor and a Z80 code editor can usefully talk to each other, though.
The more I think about it, the more I feel like my not-using-an-IDE setup is the most effective IDE of all. The plugin architecture is "any application that runs on my OS is a plugin". Data exchange is "write a file on my filesystem for the next program to read". The overall project build workflow is handled by a Makefile. I'm not saying this to act all smug and superior... just to suggest that there might be ideas there that you can borrow, and as a reference point to compare against and distinguish the bits where you might be reinventing the wheel from the bits which offer real benefits over the oldskool command-line approach. (I imagine "user-friendliness" will fall into that category... I know makefiles aren't everyone's cup of tea.) If you can offer me something that gives me a better way of working, without forcing me to change the rest of my toolkit, then I'm all in favour of the idea (provided it's not too painful to get it running nicely on a Mac :-) )
I'll not probably help you with plugins as I lack both skills and time but I would like to share my opinion.
Your project, if it appears, won't be probably used by many people. But you for sure know it. If you write a Spectrum game nowadays how many people actually play it? 20? 50? 100? With IDE for creating games it could be 2,5 or 10 people using it. Adding another platforms support could increase that number but not substancially.
As I understand you want to write this IDE not to gain fame or fortune but to improve your C# skills needed at work while doing something fun. This is really rational goal and if you have time and motivation you should do it, even if it will be used by 2 people only. Don't care about people ;)
I myself created one or two Speccy games using assembler, text editor and Sevenup. It was good to me, but if a good IDE had existed I would have used it for sure. Tommy Gun was promising but I lacked a tutorial: game created from beginnig to end in Tommy Gun and was never sure: is Tommy Gun a complete product you can create fully functional games with or is it Work In Progress.
What I'd expect form a good IDE would be game level editor which would enable visual level designing (like in Tommy Gun) and later storing this level design in Spectrum memory as bytes. Every game stores its data about graphics and level design in different way, so a good IDE should give a possibility to define it by user imo.
I'd like to wish you good luck with your project, whatever comes of it. Do what your heart tells you :)
I am surprised you think TommyGun doesn't come with any tutorials.
It currently has 2 tutorials and 1 of them is a complete game created from start to finish in TommyGun.
TommyGun is a multi-machine IDE but it has its limitations, mainly the fact that I have to write format conversion plugins for different machines and I have to do this in Borland Builder C++ a compiler not a lot of people have so others can't write plugins for it.
TommyGun also works on the principle of a generic internal format that is converted to the specifics for each machine. A concept I will be extending further with the new project.
So how exactly does TommyGun NOT do the things you said you would like in an IDE?
TommyGun had around 20 developers who actually contacted me to say thanks.
When I made releases I would get over 300 downloads in a week.
Even on WoS it use to get over 50 average downloads a week at its peak.
Where it would be the most downloaded program until everyone had it, then the tape programs would return as the most downloaded.
Sure these are not great numbers and they would not turn any developer into a millionare. But I don't charge for my software - unlike Rainbow IDE - which is rubbish and costs $30US.
But it seems even free software for some people costs too much.
Cheers.
The spectrum community is quite small here at WoS and there are larger communities such as the MSX and Commodore communities.
Their are a lot people still developing for those machines a good IDE that can be taylored to everyones needs I think would go down quite well.
There is really only 2 serious groups making speccy games, Mr Cadwell and that spanish group of guys. (name?).
I have a love for the Spectrum and so I tend to share my ideas with WoS first, but most you are making me seriously reconsider that decision.
There is so much negative feeling here sometimes.
As for Mac and Linux support, as soon as those platforms have a language and framework as powerful as C# and .NET then I would be happy to develop with it and no Java is not that tool either. Java = great idea, bad execution.
Tell me gasman do you use an IDE at all?
Like VisualStudio, Ecilpse, CodeBlocks, CrimsonEditor etc?
If so then you know the benefits of using an IDE.
Is an IDE any different than the plugins are programs and data exchange is file technique? No - same idea different implementation.
What is the advantage of using a single app with plugins?
More efficient transfer of information between plugins.
You seem to think of everything as 1,2,3 step solution with no way of passing information back to a previous process.
And this is complete impossible with the solution you provide because those programs are not written that with that in mind.
Plugins dont have to be like that - you can create a more RAD style environment where the plugins can feed into each other.
Update a sprite in the code and see if change in the image editor and visa versa of course.
This is true Rapid Application Development.
Sure your probably thinking that its too hard and it probably is for someone without the vision to see how it works.
I'll bet you that if we did manage to finish this project that people like yourself would eventually use it because it would save you a lot of dev time and I bet the tools in the projects would be better than those you currently use.
Here is what makes me excited about a project like this from a Spectrum point of view:
* The potential to share code easily amongst users. Currently this can only be done using the z80 C compilers (z88dk, sdcc, ...) as they contain assemblers with proper linkers. With every other assembler currently under active development you have two options: with some you need to cut and paste code from someone else and make changes to variable names to make sure there are no naming conflicts. Others you have the concept of local variables to a module to solve the naming issue, but if I, say, supplied a library containing 50k of subroutines these assemblers assemble the whole package as part of the project rather than picking out the pieces you really need. This makes sharing large blocks of code impractical and painful (because you're back to cut and paste). The C compilers (and when I say C you don't need to switch off :P because the C compilers are actually z80 development platforms) have linkers that can pull out the subroutines you use making true open software, shared code development possible. This is not news to anyone here who has had formal training in sw development but I think a large number have not had any. This ide project does not supply a linker but provides the opportunity for plug-ins to be written that could supply on-line help for available library code and perhaps keyword completion within the editor; such a system may also finally provide the means for true open software development on retro machines to take off.
* I have several sprite engines in development. One is currently available through z88dk and it uses unusual sprite graphic definitions. Further, it supports 8 or so different sprite types (masked, or-1-byte, or-2-byte, load-1-byte, attr only, etc). How many different sprite drawing apps available at WOS (more or less) support the graphics definitions of this sprite package? Exactly one -- SevenuP -- and how many more are likely to appear to support this sprite engine? 0. With an app available that supports plug-ins I can write the necessary support myself as opposed to being faced with writing an entire application from scratch and frankly I'd much rather be doing spectrum stuff with that time. Now a peak into the future -- I have the pieces of a 64x48 no colour clash sprite engine for the spectrum. How many sprite drawing applications will support this? 0. The aforementioned sprite engines will be ported to several other z80 machines all of which have different graphics resolutions and will require different graphics definitions. Number of available sprite drawing apps that support those? 0. Number of sprite drawing apps on the horizon for those other machines? 0.
* An generic ide targetted at multiple platforms means we may see more sw being ported from other platforms to the Spectrum (and vice versa). Just being able to open a project for, say, an msx in a tool that can generate Spectrum data types from the msx ones makes this much more likely. But I would like to go a lot further -- I foresee individual sprite libraries having ports across platforms so that the potential exists for sw written for one machine to be automatically (or as near as you can get) assembled for another platform with a button click. This made possible because of a standard internal format for music, graphics, etc and the availability of cross-platform open source libraries. We sort of see some of this already where BeTiled was originally written for the spectrum using z88dk+splib2 sprite library and this was ported to the msx using another library that emulated part of the splib2 API.
I suppose there are two common themes here. One is I would like to see a powerful set of open software library routines available to aid in retro development which will do three things: save experienced developers time (95% of spectrum sw does not require carefully customized code that makes maximum use of every cycle), to enable more people to complete projects or even attempt them (available time for a hobby is scarce), and to draw more people into writing games rather than just playing them by providing library code that takes care of many of the more difficult bits for them. Yes you don't need an ide for this but I believe an all-in-one type of ide is ideal for placing all this at people's fingertips without people having to expend any effort (and let's face it, effort is what stops a lot of things from happening...) And the plug-in architecture of such an ide means when some new open source code is made available it won't be a struggle to convince someone to write tools for it (if that even happens...).
The other is I'd like to see us (as Spectrum users) benefit from other retro communities by sharing code and sw easily. A spectrum-only utility could never enable that.
Write games in C using Z88DK and SP1