{"id":250,"date":"2009-10-31T20:41:38","date_gmt":"2009-10-31T18:41:38","guid":{"rendered":"http:\/\/www.coolbasic.com\/blog\/?p=250"},"modified":"2009-10-31T20:41:38","modified_gmt":"2009-10-31T18:41:38","slug":"coolbasic-classic","status":"publish","type":"post","link":"https:\/\/www.coolbasic.com\/blog\/2009\/10\/31\/coolbasic-classic\/","title":{"rendered":"CoolBasic Classic"},"content":{"rendered":"<p>First of all, this is purely a strategic decision. The idea has been around since <em>Assembly Summer \u201909<\/em> (held about 3 months ago), although strictly kept in secret. This news should delight the <strong>current CoolBasic user base<\/strong>. And here it comes: \u201cWe are announcing <strong>CoolBasic Classic<\/strong>, a procedural game programming language, and it will <strong>replace the current version<\/strong>.\u201d It will also be released sooner than CoolBasic V3!<\/p>\n<p>There have been rumors and speculation about further development of the beloved procedural and easy game programming language, CoolBasic. Your concerns about too steep learning curve between procedural and object oriented programming have been taken into account, and CoolBasic Classic is designed to continue from where the current (outdated) Beta left. Yes, CoolBasic Classic and CoolBasic V3 are two completely <strong>different products<\/strong>, although both are free BASIC-like programming languages designed for game creation. The programming language of choice is partially linked to taste, and forcing everyone to move on to object oriented world seemed a bit too harsh \u2013 especially given that the user base is relatively young (c\u2019mon, it\u2019s a game making tool). We want to offer <em>options<\/em> from which the users can choose the best tool fitting to their interests. Also, we felt that it really is time for some serious technology upgrade \u2013 I\u2019ve seen how bad it is. And it could be so much better. There are lots of other reasons behind the decision as well, but I\u2019m sure you\u2019ll find them out by yourselves eventually.<\/p>\n<p>The current CoolBasic will undergo a complete overhaul. There will be a new Development Environment, new Compiler, new Virtual Machine, and new User Manual. There will also be changes to the website (it will reborn as real portal) and the forums. <strong>All content will be available in both English and Finnish<\/strong>. The amount of work is too much for me alone, so I will also assemble a <em>DevTeam<\/em> \u2013 with real responsibilities and assignments. I\u2019ll talk about each of the mentioned aspects in greater detail in a moment.<\/p>\n<p><strong>The language<\/strong><br \/>\nIn a nutshell, CoolBasic Classic syntax will remain mostly the same as in the current version. Some features will become obsolete, whereas others will be fine-tuned and improved. All in all, users should be able to port their existing code without too much of a change (outside of find-replace, that is). However, due to complete re-write, command sets can change (and probably will) a bit. But this is necessary in order to implement some of the planned new features in a rational and consistent way. Syntactic changes as well as composition of command sets are something I\u2019d like to hear other opinions about, and that\u2019s one thing I need the DevTeam for.<\/p>\n<p>The in-built data types mainly remain the same, only float numbers are double-precision now. The design also pays extra attention to 64-bit integers for possible later implementation. The language is also slightly more type-safe. You can now define arrays and functions of any type, or pass arguments of any type to a function, including typed arrays. In addition, you can overload functions now. New statement types may also be introduced later (enumerations, anyone?).<\/p>\n<p><strong>The compiler<\/strong><br \/>\nThis is already a work in progress, and it\u2019s, in fact, half done! The CoolBasic Classic compiler is also borrowing technology from CoolBasic V3, and I\u2019m really excited about it because this is a perfect chance to test it in practice as part of a slightly less complicated process. Since CoolBasic Classic is a procedural language, the compilation is much simpler. I can skip some phases that CoolBasic V3 compiler performs, and this will result in very fast compilation and also somewhat smaller memory fingerprint. The new compiler is hundreds of times faster than the current CoolBasic compiler \u2013 the process would be done in a few milliseconds even if the source code was tens of thousands lines long.<\/p>\n<p>The compiler is just plain better in every aspect now. It has much better parsing mechanics (no more special-case syntax bugs). For example, you can now define multiple variables and constants within a single <code>Dim<\/code>\/<code>Global<\/code>\/<code>Const<\/code> statement, as well as initialize them. Moreover, all limitations are gone now \u2013 Yeah, the legendary function limit is no more (you can drop the hacking now, *cough*). Just like the V3 compiler, this one also fully supports Unicode, and it has been built 64-bit architecture in mind. Just like the V3 compiler, CoolBasic Classic compiler is a console application callable easily from 3rd party applications.<\/p>\n<p><strong>Virtual Execution System<\/strong><br \/>\nCoolBasic Classic is still interpreted, although it has much better raw performance. I\u2019ve named the new <em>virtual machine<\/em> as \u201cCool Virtual Execution System\u201d. <strong>CoolVES<\/strong> is a game engine framework offering functionality to display accelerated graphics, play sound, use sockets for networking, and access advanced game mechanics (in-built physics library, maybe). The graphics engine is finally fully compatible with Windows Vista and Windows 7, and will cause no dump of <em>AeroGlass<\/em> upon launch. It uses <em>DirectX 9<\/em> technology, although it\u2019s possible to enable <em>OpenGL<\/em>, too. The sound engine is no longer bound to <em>FMOD<\/em> by default. No more questionable licenses. Executable sizes will be smaller, and it should now be possible to change the icon without messing with <em>UPX<\/em> in the middle.<\/p>\n<p>There will also be a publicly available documentation about the byte code\u2019s structure, basically enabling anyone to write their own compiler, and this code can then be then run in the VES. The idea behind is to leverage limitation of \u201cthe language of choice\u201d. Maybe we\u2019ll see CoolC#, CoolJavaScript, CoolPython (I\u2019d like to name this \u201cCoolBoa\u201d hehe), CoolPHP, or something similar in the future. In the end, it doesn\u2019t matter which language you used, the game will run just fine in the VES utilizing all features made available by it. We actually encourage community members to implement new languages to the CoolVES technology \ud83d\ude42<\/p>\n<p><strong>The manual<\/strong><br \/>\nLet\u2019s bring this up to date as well. I already have the design ready, and the database schema is in the works. Details belong to the DevTeam, but the structure of the Classic manual will probably differ from CoolBasic V3 User Manual. The focus is the online content.<\/p>\n<p><strong>The editor<\/strong><br \/>\nThe aim is to have a <em>shared Development Environment<\/em> for all CoolVES languages (and probably for CoolBasic V3 as well): You just choose from a list what kind of a project to create, and in which of the installed language you want to work on. All game files naturally belong to a project, but CoolBasic Classic still utilizes the <code>IncludeFile<\/code> statement, don\u2019t worry. Project based approach, however, enables nice new ideas to control and load game media and other content. But that\u2019s, once again, the DevTeam\u2019s business.<\/p>\n<p>Everything is based on modules, and they can be updated automatically. Everything is always up-to-date, and only the changed files will be downloaded. The purpose is to deliver bug fixes and updates as soon as they become available with minimum trouble. Modules can also be tools. Imagine game wizards that generate source code for you \u2013 or better yet, build a complete game for you without a single line of code!<\/p>\n<p>Also the editor component will be updated: I\u2019m planning for better syntax highlighting, code refactoring and full Intellisense \u2013 only to name a few. Writing code in a modern and efficient way is the top priority.<\/p>\n<p><strong>The DevTeam<\/strong><br \/>\nI need an orchestra! I can\u2019t play this out alone. CoolBasic organization will be founded before the end of the year, with full hierarchy and assignments. CoolBasic staff will born, and we\u2019ll do development together, mmkay? And for all this, I need volunteers willing to carry responsibility. I need developers (this includes tech and web too). Confidential material, such as source code and technical documentation, will be shared among them. The required skills vary a lot, but I expect good knowledge in whatever that is they were chosen to the team for. I also expect that they have the time and true interest in CoolBasic technologies and are willing to improve CoolBasic products. Staff members don\u2019t necessarily have to be master programmers; I need designers, writers, managers, and content providers, too. If you want to be part of the Finnish game making culture, and you want to aim high, then you fit the profile.<\/p>\n<p>More information about the DevTeam\u2019s tasks and how to apply will be posted on the official forums later.<\/p>\n<p><strong>Document Storage<\/strong><br \/>\nFor the past few weeks I\u2019ve been building a website specialized in document storage. It has a login system and access permissions based on user privileges. While visitors have access to public documents, members of the staff may log in and gain access to certain internal documents, source codes, database dumps, tools and generally everything that is meant for the use of the DevTeam. Also this project has past the halfway now, and it\u2019s looking really good in general.<\/p>\n<p><strong>TL;DR: CoolBasic Classic will be remade, in every way. And it will be released prior to V3. More information about the DevTeam will appear on the official forums.<\/strong><\/p>\n<p>The Finnish translation of this info is also available <a href=\"http:\/\/www.coolbasic.com\/phpBB3\/viewtopic.php?f=9&#038;t=1879\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>First of all, this is purely a strategic decision. The idea has been around since Assembly Summer \u201909 (held about 3 months ago), although strictly kept in secret. This news should delight the current CoolBasic user base. And here it comes: \u201cWe are announcing CoolBasic Classic, a procedural game programming language, and it will replace [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[7],"_links":{"self":[{"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/posts\/250"}],"collection":[{"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":0,"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/posts\/250\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/media?parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/categories?post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coolbasic.com\/blog\/wp-json\/wp\/v2\/tags?post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}