dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

unmanaged code + .NET
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Thu Jul 20, 2006 2:40 pm    Post subject: unmanaged code + .NET

Tā kā esmu ļoti slinks, tad vienmēr esmu veiksmīgi izvairijies no dažādu GUI aplikāciju rakstīšanas izmantojot tīru Win32API vai MFC.. Arī wxWidgeti man neiepatikās jo viss jāraksta ar roku. Tā nu nevelkot garumā, pastāstīšu pie kā esmu nonācis:
Īsi sakot jau kopš .NET 1.0 laikiem mani tirdija doma izmantot Windows formas priekš dažādu vizuālu toolju izveides kuri izmantotu grafisko dzinēju, kas būtu rakstīts uz vecā labā C++ bez .net. Taču man nepatika tas, ka nebija normālas iespējas to izdarīt - lādēt iekšā manuāli funkcijas no .dll (PInvoke) ir galīgi stulbi. Vakar atkal atcerējos šo visu un atcerējos, ka 2005 studijā ir jaunais C++/CLI, kas itkā atvieglo visu to lietu.. un patiesi - atliek vien manam dzinēja DLL projektam pielikt kompilatora parametru \clr un kautkādā vietā ierakstīt
#pragma managed (Viss dzinējs ir unmanaged, managed norāda uz kkādu tukšu apgabalu - tīri lai kompilators izveidotu t.s. entry pointu priekš .net) Kad tas ir izdarīts, tad manā nu jau tīri .NET projektā (C++) includēju dzinēju un pielinkoju .lib'u.. Tālāk gan ir pašam manuāli jākonvertē visi tipi no managed uz unmanaged utt, taču viss strādā ideāli.
Varu vizuāli uztaisīt savu formu ar .NET rīkiem un vajadzīgajā vietā izsaukt funkcijas no ārējā dzinēja - piemēram padot hWnd no kāda Windows Forms objekta dzinējam D3D/GL inicializācijai.

Rezumējot - ko tas dod: Rakstam dzinēju C++, rakstam spēli C++, rakstam Editorus/Tooljus utt izmantojot .NET un WindowsFormas u.c. labumus ko piedāvā .NET.
Back to top
View user's profile Visit poster's website MSN Messenger
Delfins



Joined: 20 Jan 2003
Posts: 60
Location: Riga

PostPosted: Thu Jul 20, 2006 4:19 pm    Post subject:

un vai ies bez NET freimworka uz w2k? Tāpat var to visu `pielinkot` arī webam, un remūti taisīt spēli... A jēga kāda :)

PS: MFC nav nemaz nekas jāraksta... vis ir tāpatās, kā Delphi/.NET dizainerī... Click-Click-DblClick un tik raksti kodu iekšā
_________________
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
Back to top
View user's profile Send e-mail Visit poster's website
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Thu Jul 20, 2006 9:40 pm    Post subject:

Taadi cilveeki bez Net frameworka ir ar uguni jāmeklē mūsdienās..
Un jēga tev būtu skaidra ja tu zinātu cik ļoti plašas iespējas piedāvā .NET platforma un cik ļoti tā paātrina izstrādi. MFC un vecās Win32 api metodes jau var teikt ir mirušas jo pats M$ nākotni redz tikai caur .NET

Labi es nezinu kā citiem, bet priekš manis tas viss ir patīkams atklājums kas mani patiesi dara priecīgu Smile
Back to top
View user's profile Visit poster's website MSN Messenger
Janka



Joined: 14 Nov 2005
Posts: 19
Location: Jelgava

PostPosted: Thu Jul 20, 2006 10:00 pm    Post subject:

Bet cik man ir sanaacis darboties ar .net vinsh ir stipri leenaak nekaa normaals c++ kods... Laigan tas darboties bija 2x un caur vb varbuut tas arii to padariija leenaaku, bet nez vai es persooniigi izmantsu .NET kkam nopietnaakam par kalkulatoru...

[EDIT] PS Shitais laikam offtopiks ar manu attieksmi pret .net Rolling Eyes
Back to top
View user's profile Send e-mail
Delfins



Joined: 20 Jan 2003
Posts: 60
Location: Riga

PostPosted: Fri Jul 21, 2006 7:34 am    Post subject:

dev wrote:
Taadi cilveeki bez Net frameworka ir ar uguni jāmeklē mūsdienās..


es dzīvoju bez .NET, un tā arī turpināšu...
Ir pareizi teikts, ka .NET bremzīgs... Un vispār, nav starpības kurā valodā raksti, gala rezultātā tiek iegūts mašīnkods, tikai vot ātruma ziņā tas nedaudz sako... Paskaties kaut vai uz jebkuru "smago" pakotni, kura pilda daudzas f-jas.. un nekas, bez .NET... A tas, ka izstrāde notiek ātrāk - nav arguments (nu ja vienīgi M$ - ātrāk piķi nokāst un spies usserus pirkt jaudīgākas mašīnas)
_________________
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
Back to top
View user's profile Send e-mail Visit poster's website
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Fri Jul 21, 2006 9:46 am    Post subject:

Brr, tik bērnišķīga attieksme no jūsu puses.. jūs nesapratāt domu..
Es nesaku ka tagad spēles jāveido uz .NET, es saku ka atradu veidu kā .NET programmas savienot ar normālām C++ bibliotekām lai varētu izmantot vienu un to pašu dzinēju gan spēlē gan editoros/tooljos kuri būtu rakstīti uz .NET kur tas notiek daudz ātrāk kā jebkurā citā veidā.

Ja jūs apmierina MFC vai Win32 API tad tas nav priekš jums, bet man patīk .NET - Windows Formas, ērta Custom kontroļu izveide un visa cita milzīgā funkcionalitāte ko .NET piedāvā.. turklāt man ir tieksme arī skatīties uz priekšu nākotnē - uz Vistu un .NET 3.0 un to ka .NET nekur nepazudīs be tuvākajā laikā pilnībā aizvietos MFC un WinApi.

Runājot par ātrumu - izmantojot editoram un tooljiem ātrums ir pietiekams.. - turklāt, kā jau teicu, visa fiška ir tieši tajā, ka tie programmas moduļi, kas ir viskritiskākie (dzinējs) ir rakstīti tīrā nemenedžētā C++ un tiek pielinkoti klāt.. principā .NET darbina tikai čaulu (GUI)..

Un tas ka izstrāde ātrāka ir pats galvenais arguments - gamedev biznesā galvenais ir ātrāk un lētāk.

To Delfins:
Tas ka tu nelieto .NET nenozīmē ka viņš tev nav uz kompja (Ja vien tu nelieto Win). Uz Win .NET nāk kopā jau ar servispaku. Uz Linux arī ir pieejams tāda lieta kā Mono (.NET ports). Un tā kā es lieku priekšā izmantot .NET tikai priekš dev toolju izstrādes, tad gala userim viņš nemaz nebūs vajadzīgs, jo pati spēle būs taisīta bez .NET.
Es arī saprotu ka ir kruti teikt, ka tu esi tik spics vecis ka tev vieglāk visas GUI aplikācija uz MFC vai WinAPI uztraksīt.. taču ar šādu ignoranci tālu netiksi. Tas ir neapstrīdami, ka ar .NET to izdarīt ir daudz vieglāk un ātrāk.
Back to top
View user's profile Visit poster's website MSN Messenger
Delfins



Joined: 20 Jan 2003
Posts: 60
Location: Riga

PostPosted: Fri Jul 21, 2006 10:27 am    Post subject:

Nē nu vnk tu "atklāji, ka ūdeni var dzert".. loģiski, ja mums ir DLL, ir .lib/.h, tad to varēs izmantot praktiski jebkurā programmēšanas valodā, sākot no ASM līdz Java/.NET... jēga topikam... Praktiski tā vienmēr arī dara, ja vajag savienot 2 platformas, lai nepārrakstītu biznesloģiku :)
_________________
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
Back to top
View user's profile Send e-mail Visit poster's website
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Fri Jul 21, 2006 10:38 am    Post subject:

Tu nelasi rūpīgi - nemenedžēto un menedžēto (.NET) kodu nav viegli savienot. Līdz šim bija tikai viens puslīdz normāls veids - manuāli ielādēt dll un katru vajadzīgo funkciju pa vienai manuāli ielādēt - nodeklarējot savā .NET programmā katrai ielādētajai funkcijai atbilstošu statisku funkciju.. tas ir baismīgi pretīgs darbs, turklāt arī jēga maza, jo spēles dzinējs visticamākais būs objektorientēts un nesastāvēs no dažām viegli izmantojamām funkcijām.
Tas par ko runāju es ir tas ko piedāvā VS2005 - C++/CLI, kas ļauj kompilēt hibrīdapplikācijas kurās menedžētais un nemenedžētais kods ir kopā. T.i. vari izmantot savu C++ dzinēju vai kādu nu citu bibliotēku patiešo no .NET programmām - ar visām klasēm, struktūrām un funkcijām. Tici vai nē, bet tas ir kautkas jauns.
Back to top
View user's profile Visit poster's website MSN Messenger
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Fri Jul 21, 2006 1:18 pm    Post subject:

Es personīgi rakstos uz vecā 2003. gada Studio.NET.
Neko labāku par šo vēl neesmu manijis. Vēl 2005. gada sākumā lasīju par 2005. gada Studio.NET un laidu siekalas universitātes bibliotēkā.
Tāda sajūta, ka viss .NET kodols ir pārveidots par 100 * n%. Wink
Ehhh ... labprāt pasūtītu no kāda CD ar šo 2005. gada .NET, pašam slinkums kačāt. Razz
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Fri Jul 21, 2006 1:30 pm    Post subject:

Interesants topiks.Nekad nebiju pad iedomaajies sasleegt savu engine kopaa ar .NET.Patiesiibaa man veel nav izveidojies iists viedoklis par .NET.Es to izmantoju tikai-1... 2... gatavs aplikaacijaam (datubaazu menedzhments,teksta redaktori utt.) un iisti neredzu atshkjiriibu no MFC.Lasiiju wikipedia'aa un veel visaadaas vietaas,bet taa arii neatradu taadu informaaciju,kas paarliecinaatu,ka .NET IR LABAAKS,vai vismaz uzskaitiitu plusus un miinusus(varbuut varat iedot kaadu linku.Tikai nedodiet .NET tehnologjijas aprakstus-to visu jau esmu paarlasijies).

Un kaa darbojas tas LINUX .NET ports?Iisti nespeeju iedomaaties.LINUX un Windows tak ir diezgan atshkjiriigi.Kaa abi var izmantot vienu sisteemu (t.i. .NET) atshkjiriigu rezultaatu sasniegshanai?
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jul 21, 2006 2:30 pm    Post subject:

A kā GTK+ un Qt un WxWidgets darbojas gan uz Linux un gan uz Windows? Tieši tāpatās - abiem uz katras OS apakšā ir leijeris, kas savieno OS specifisko stuffu ar savis veidoto API interfeisu.

.NET pēc būtības nav uz mašīnkodu kompilējams kods. Tas ir vairāk kas uz Java pusi - kods kompilējas uz IL baitkodu (kurš protams pēc tam runtaimā JIT rezultātā kompilējas uz mašīnkodu). Un nu Javas plusus/mīnusus ceru ka nav jāstāsta. Ļoti līdzīgi plusi un mīnusi ir arī .NET'am.
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Fri Jul 21, 2006 2:48 pm    Post subject:

Ok.Palasiju WxWidgets dokumentaaciju.Apmeeram sapratu.

bubu wrote:
.NET pēc būtības nav uz mašīnkodu kompilējams kods. Tas ir vairāk kas uz Java pusi - kods kompilējas uz IL baitkodu (kurš protams pēc tam runtaimā JIT rezultātā kompilējas uz mašīnkodu).

elvman wrote:
Tikai nedodiet .NET tehnologjijas aprakstus-to visu jau esmu paarlasijies


Ar Java neesmu njeemies(nu tikai citu izveidotas aplikaacijas),tapec varbut varetu nedaudz apgaismot mani ar tiem plusiem un minusiem.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Fri Jul 21, 2006 3:27 pm    Post subject:

Nu par .NET plusiem - plusi ir tādi ka .NET ir jauns un paliek arvien jaunāks jo M$ drīzumā izlaidīs jau .NET 3.0 uz vistas.. .NET sastāv no liela bibliotēku kopuma (sadalīts daudzos neimspeisos) - principā iekš .NET ir klases un funkcijas priekš pilnīgi visa ko vien var iedomāties (patiešām viss viss viss ).
http://msdn2.microsoft.com/en-us/library/ms306608.aspx

Turklāt viss ir pēc vienota standrarta un ļoti viegli un ērti saprotams/lietojams. .NET pēc būtības ir Microsoft produkts, kas paredzēts Win32 API un MFC aizvietošanai (jamie jau vairākus gadus netiek apgreidoti)..
Neizmantot .NET būtībā nozīmē palikt pagātnē un izmantot vecās tehnoloģijas, kurām nav nākotnes.

Vel papildus bonusi -
.NET var izmantot vairākās valodās - C++, C#, VB.NET, ASP.NET utt un attiecīgi paver plašas iespējas lai dažādu valodu programmētāji varētu savienot savus veikumus (piemēram viens uztaisa C# kkaadu moduli un pēc tam cits šo moduli var izmantot no C++ vai VB.NET)
.NET rakstītās programmas ir menedžētas - t.i. nav jārūpējas par atmiņas atbrīvošanu un pointeriem - par to parūpējas pats .NET FW.

Spēļu dzinēju un citu programmu, kas prasa ļoti lielu ātrdarbību, rakstīšanai protams veljoprojām jāizmanto tīru C/C++, taču manis piedāvātais variants ļauj savienot abas tehnoloģijas.

Un vispār .NET nemaz tik lēns nav - piemēram DirectX .NET versija (managed DX) ir 97% ātra salīdzinot ar normālo DX, tā kā ja nav jātaisa supermoderna FPS spēle, tad piemēram kātu turn based stratēģiju vai ko tādu var mierīgi taisīt pat tikai uz tīra .NET

Un speciāli EDDY: mēs te runājam par .NET framework nevis par vizuālo studiju.net Smile[url][/url]
Back to top
View user's profile Visit poster's website MSN Messenger
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jul 21, 2006 3:49 pm    Post subject:

Viens .NET mīnuss priekš spēļu developēšanas, kas nāk prātā, ir automātiskais atmiņas menedžments - tu nekad nevari būt drošs, kad izsauksies garbage collectors un sāks atbrīvot objektus tādējādi radot performances zudumu.
Back to top
View user's profile Send e-mail
gazz



Joined: 03 Jan 2004
Posts: 355
Location: Teika

PostPosted: Sat Jul 22, 2006 12:28 am    Post subject:

imho, garbage collectoru var izsaukt manuaali
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group